luogu1378油滴擴散(深搜)

2021-08-18 04:33:58 字數 953 閱讀 3500

題目連線

#同類的題目還有這些#

題目大意:

1 座標軸內,定義乙個方框(知道對角端點);

2 n個點在框內做圓,要求彼此不相交。

3 求最大的覆蓋面積。

解題思路:

其實乙個全排列的思維就搞定了,只是座標中的求距離比較繁瑣;

1 預處理邊界點,我是強行把對角點定義在(左下)和(右上);

2 深搜:依次列舉每個點 i ,求他能擴散的最大面積;

3 和全排列思路一樣,根據不同的順序,選全部點後更新答案。

4 輸出框內剩餘面積。

上**:

#include#include#includeusing namespace std;

const double pi=3.141592653,inf=999999999.0;

int n;

double sx,sy,ex,ey,ans=0;

struct noda[10];

double ss(int x,int y)//求 x點和 y點 的距離

void dfs(int x,double f)//當前搞定了x個,已經占用面積 f

//更新最優解

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

if(a[i].v==0)

if(mi<0) mi=0.0;//i點被其他迪點覆蓋了

a[i].v=1; a[i].d=mi;

dfs(x+1,f+mi*mi);

a[i].v=0; a[i].d=0; }}

int main()

dfs(0,0);//當前詢問了x個,已經占用面積 f

ans=(ex-sx)*(ey-sy)-ans*pi+0.5;//求剩餘面積,四捨五入

printf("%d",(int)ans);

return 0;

}

Luogu P1378 油滴擴充套件

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

洛谷 1378 油滴擴充套件

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

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...