Luogu P1378 油滴擴充套件

2021-07-26 06:53:55 字數 1249 閱讀 6529

題目描述

在乙個長方形框子裡,最多有n(0≤n≤6)個相異的點,在其中任何乙個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油滴佔據的總體積最大呢?(不同的油滴不會相互融合)

注:圓的面積公式v=pi*r*r,其中r為圓的半徑。

輸入輸出格式

輸入格式:

第1行乙個整數n。

第2行為長方形邊框乙個頂點及其對角頂點的座標,x,y,x』,y』。

接下去n行,每行兩個整數xi,yi,表示盒子的n個點的座標。

以上所有的資料都在[-1000,1000]內。

輸出格式:

一行,乙個整數,長方形盒子剩餘的最小空間(結果四捨五入輸出)

輸入輸出樣例

輸入樣例#1:

2 20 0 10 10

13 3

17 7

輸出樣例#1:

50題解

直接對每個點進行暴力搜尋

#include

#include

#include

#include

#include

using

namespace

std;

const

double pi=acos(-1);

double r[10],ans;

int n,xs,ys,xt,yt;

int x[10],y[10],mx[10];

bool flag[10];

inline

double dist(int x1,int y1,int x2,int y2)

inline

void ud()

inline

void dfs(int v)

dfs(v+1);

flag[i]=0;

}}int main()

dfs(1);

double tmp=(double)(xs-xt)*(double)(ys-yt);

if(tmp<0) tmp=-tmp;

ans=tmp-ans;

int anss=floor(ans);

if(double(ans-anss)>=0.5) anss++;

printf("%d\n",anss);

return

0;}

luogu P1378 油滴擴充套件

題面傳送門 這道題資料這麼小,一看就是搜尋,只是細節比較多。我們思考怎麼通過乙個點的半徑確定另乙個點的半徑。兩點的歐幾里得距離顯然是 x1 x2 2 y 1 y2 2 sqrt x1 x2 2 y1 y 2 2 那麼減去那個點的半徑d dd,那麼可得式子為 x1 x2 2 y 1 y2 2 d sq...

Luogu P1378 油滴擴充套件

這是一道很值得反思的題目 首先關於double的基本用法就非常不熟悉 int 0.0 double int轉化成double的方法 printf 0.lf 直接四捨五入輸出int 關於題目其實並不是個很難的題目 關鍵就是搜尋計算狀態 就是比較得出r的過程 特判乙個r不用出來的答案直接當0計算 inc...

洛谷 1378 油滴擴充套件

又有浮點數,桑心 話說lxt的14.0下取整竟然成了13?2333,害怕了。go to the problem 題目描述 在乙個長方形框子裡,最多有n 0 n 6 個相異的點,在其中任何乙個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢...