題目中給出矩形的長寬和一些點,可以在每個點放油滴,油滴會擴充套件,直到觸碰到矩形的周邊或者其他油滴的邊緣,求出剩餘面積的最小值,就是求油滴面積的最大值。策略是dfs加上回溯,暴力求解。
**如下:
1 #include2using
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個點上放置油滴,才能使放置完畢後所有油滴佔據的總體積最大呢?不同...