在乙個長方形框子裡,最多有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輸出樣例#1: 複製20 0 10 10
13 3
17 7
506個點 回溯法即可 也不用剪枝
注意一一些特殊情況 比如半徑不可能為負數
#includeusingview codenamespace
std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define ri(n) scanf("%d",&(n))
#define rii(n,m) scanf("%d%d",&n,&m)
#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define rs(s) scanf("%s",s);
#define ll long long
#define rep(i,n) for(int i=0;i
#define clr(a,v) memset(a,v,sizeof a)
/////////////////////////////////
/#define inf 0x3f3f3f3f
#define n 2000+5
#define pi 3.1415926
intn,m;
double
x,y;
struct
node
s[10
];int
vis[n];
double
maxx;
double r[10
];double getr(int
x)
if(ans>0
)
return
ans;
return0;
}void dfs(int cnt,double
sum)
rep(i,
1,n)
if(!vis[i])
}int
main()
maxx=0
; dfs(
1,0);
printf("%d
",(int)(x*y-maxx+0.5
) );
return0;
}
P1378 油滴擴充套件
在乙個長方形框子裡,最多有n 0 n 6 個相異的點,在其中任何乙個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油滴佔據的總體積最大呢?不同的油滴不會...
P1378 油滴擴充套件
在乙個長方形框子裡,最多有n 0 n 6 個相異的點,在其中任何乙個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油滴佔據的總體積最大呢?不同的油滴不會...
題解 P1378 油滴擴充套件
在乙個長方形框子裡,最多有n 0 n 6 個相異的點,在其中任何乙個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油滴佔據的總體積最大呢?不同的油滴不會...