P1378 油滴擴充套件

2022-03-04 08:43:19 字數 1321 閱讀 6041

在乙個長方形框子裡,最多有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

solution:

本題暴力搜尋回溯就$ok$了,注意判斷半徑時還需考慮某個點包含在另乙個圓中的情況,這時應該賦半徑為$0$。然後就是注意一下精度問題,和一些玄學東西(不能定義變數$y1,x1$貌似因為這是內建函式中用的變數名,記得開$double$)

**:

#include#define il inline

#define ll long long

#define inf 520520

#define pi 3.14159265358979323846

using

namespace

std;

double

xx1,yy1,xx2,yy2;

intn;

double

ans;

bool vis[7

];struct pointa[7

];il

double abss(double x)

il double pd(int

k)

returnp;}

il void dfs(int now,double

area)

for(int i=1;i<=n;i++)

if(!vis[i])

}int

main()

P1378 油滴擴充套件

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

題解 P1378 油滴擴充套件

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

P1378 油滴擴充套件 搜尋

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