TYVJ1443(油滴擴充套件)

2021-05-27 00:00:46 字數 2025 閱讀 2564

r的半徑共包含三種情況:首先,半徑不能碰邊,因此在它到四個邊界裡找乙個最小值。

然後,我們遍歷已經有半徑的點,然後看看能不能被更新,如上圖,左邊的情況是,左邊的圖對於紅色的圓來說,黑圓圓心距紅圓圓心的距離d減去紅圓的半徑r1如果小於黑圓到四個邊界的距離並且大於0(小於0就出現了第二種情況)那麼黑圓的半徑就必須要更改否則如果如右圖所示,兩個圓心間的距離d減去紅圓的半徑r1小於0則說明黑圓在紅圓的裡面,那麼它就不能擴充套件,所以黑圓的半徑就變成了0。

因為要保證油滴占領的面積最大,所以不停更新,最後用總面積減去圓的面積就是我們的答案。

在更新半徑時必須保證這個點必須有半徑,這樣的話才能更新。

program box;

const

pi=3.1415926;

var n,s,sx,sy,ex,ey:longint;

ans:real;

x,y:array [1..6] of real;

b:array [1..6] of boolean;

d:array [1..6,1..6] of real;

r:array [1..6] of real;

procedure init;

var i:longint;

begin

ans:=0;

fillchar(b,sizeof(b),true);

readln(n);

readln(sx,sy,ex,ey);

s:=abs((sx-ex)*(sy-ey));

if n=0 then

begin

writeln(s);

close(output);

halt;

end;

for i:=1 to n do readln(x[i],y[i]);

end;

function min(x,y:real):real;

begin

if x>y then exit(y) else exit(x);

end;

function check(xx,yy:real):real;

var i:longint;

tr,tm:real;

begin

tr:=maxlongint;

tr:=min(min(abs(xx-sx),abs(xx-ex)),min(abs(yy-sy),abs(yy-ey)));

for i:=1 to n do

begin

if not b[i] then

begin

tm:=sqrt(sqr(xx-x[i])+sqr(yy-y[i]));

if (tm-r[i]0) then

begin

tr:=tm-r[i];

endelse if tm-r[i]<=0 then tr:=0;

end;

end;

exit(tr);

end;

procedure dfs(t:longint);

var i:longint;

temp:real;

begin

if t=n+1 then

begin

temp:=0;

for i:=1 to n do temp:=temp+pi*sqr(r[i]);

if temp>ans then ans:=temp;

exit;

end;

for i:=1 to n do

begin

if b[i] then

begin

r[i]:=check(x[i],y[i]);

b[i]:=false;

dfs(t+1);

b[i]:=true;

r[i]:=0;

end;

end;

end;

begin

init;

dfs(1);

writeln(round(s-ans));

end.

搜尋 油滴擴充套件

1 油滴擴充套件 box 問題描述 在乙個長方形框子裡,最多有n o n 6 個相異的點。在其中任何 個點上放乙個很小的油滴,那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套件完畢才能放置下乙個油滴。那麼應該按照怎樣的順序在這n個點上放置油滴,才能使放置完畢後所有油...

luogu cogs 油滴擴充套件

輸入檔案 oilbox.in輸出檔案 oilbox.out簡單對比 時間限制 1 s 記憶體限制 128 mb 在乙個長方形框子裡,最多有n o n 6 個相異的點。在其中任何乙個點上放乙個很小的油滴 即半徑可視為0 那麼這個油滴會一直擴充套件,直到接觸到其他油滴或者框子的邊界。必須等乙個油滴擴充套...

Luogu P1378 油滴擴充套件

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