洛谷1378 油滴擴充套件 dfs進行回溯搜尋

2022-05-20 12:26:08 字數 1499 閱讀 8945

題目中給出矩形的長寬和一些點,可以在每個點放油滴,油滴會擴充套件,直到觸碰到矩形的周邊或者其他油滴的邊緣,求出剩餘面積的最小值,就是求油滴面積的最大值。策略是dfs加上回溯,暴力求解。

**如下:

1 #include2

using

namespace

std;

3 typedef unsigned int

ui;4 typedef long

long

ll;5 typedef unsigned long

long

ull;

6#define pf printf

7#define mem(a,b) memset(a,b,sizeof(a))

8#define prime1 1e9+7

9#define pi 3.14159265

10#define prime2 1e9+9

11#define scand(x) scanf("%lf",&x)

12#define f(i,a,b) for(int i=a;i<=b;i++)

13#define scan(a) scanf("%d",&a)

14#define dbg(args) cout<<#args<<":"<15

#define pb(i) push_back(i)

16#define ppb(x) pop_back(x)

17#define inf 0x3f3f3f3f

18#define maxn 10

19int

n;20

double x1,x2,y1,y2;//

瞄的,y1洛谷編譯不了

21bool

vis[maxn];

22double dis[maxn][maxn],area=0.0;23

struct

pcir[maxn];

27double distance(double x1,double y1,double x2,double y2)//

點距 28

31double get_max(int num)//

計算第num個點形成圓的最大半徑

3243}44

return

ans;45}

46void dfs(int dep,double

tot)

4754 f(i,1

,n)55

6566}67

}68intmain()

6980 mem(vis,false

);81 f(i,1

,n)82 f(j,1

,n)83

86 dfs(0,0.0

);87

int ans=(fabs(x1-x2)*fabs(y1-y2)-area+0.5

);88 pf("

%d\n

",ans);

89 }

洛谷 1378 油滴擴充套件

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

油滴擴充套件 洛谷1378 搜尋

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

洛谷 P1378 油滴擴充套件

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