★ 輸入檔案:oilbox.in
輸出檔案:oilbox.out
簡單對比
時間限制:1 s
記憶體限制:128 mb
在乙個長方形框子裡,最多有n(o≤n≤6)個相異的點。在其中任何乙個點上放乙個很小的油滴(即半徑可視為0),那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油滴佔據的總面積最大呢?(不同的油滴不會相互融合)
第一行乙個整數n。
第二行為長方形邊框乙個頂點及其對角頂點的座標,x,y,x',y』。
接下去n行,每行兩個整數xi,yi,表示盒子內n個點的座標。
以上所有的整數都在[-1000,1000]內。
一行,乙個整數,長方形盒子剩餘的最小空間(結果四捨五入輸出)。
20 0 10 10
3 37 7
【樣例輸出】
50注:圓的面積公式s=pi*r*r,其中r為圓的半徑,pi=3.1415926。
1 #include2 #include3 #include4 #include5using
namespace
std;
6int
n,xa,ya,xb,yb;
7const
double infd=100000000.0;//
這個是對於double的inf
8const
double pi=acos(-1);//
為了精度
9double
ans;
10int x[10],y[10
];11
double r[10
];12
int seq[10
];13
int fact[10]=;//
階乘值,其實就是全排列數
14double dist(int a,int b)
17void
solve()
29 r[seq[i]]=mr;//
記錄該圓半徑
30 cur-=pi*mr*mr;//
計算目前未被覆蓋的面積 31}
32 ans=min(ans,cur);//
更新答案
33return;34
}35intmain()
44for(int i=0;i)
48 printf("
%.0lf
",ans);
49return0;
50 }
搜尋 油滴擴充套件
1 油滴擴充套件 box 問題描述 在乙個長方形框子裡,最多有n o n 6 個相異的點。在其中任何 個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油...
TYVJ1443(油滴擴充套件)
r的半徑共包含三種情況 首先,半徑不能碰邊,因此在它到四個邊界裡找乙個最小值。然後,我們遍歷已經有半徑的點,然後看看能不能被更新,如上圖,左邊的情況是,左邊的圖對於紅色的圓來說,黑圓圓心距紅圓圓心的距離d減去紅圓的半徑r1如果小於黑圓到四個邊界的距離並且大於0 小於0就出現了第二種情況 那麼黑圓的半...
Luogu P1378 油滴擴充套件
題目描述 在乙個長方形框子裡,最多有n 0 n 6 個相異的點,在其中任何乙個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油滴佔據的總體積最大呢?不同...