DFS爆搜
首先可以确定每个人分到的面积S,然后DFS枚举怎么切,估计复杂度应当是
O(2n1∗2n2∗2n22∗⋯⋯)
,n很小,所以logn很小,可以随便玩
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
double s, x, y, ans;
double dfs(
double x,
double y,
int need)
{
if(need==
1)
{
return max(x,y)/min(x,y);
}
double ret =
23333333333.0;;
for(
int i =
1; i < need; i++)
{
double ss = s*i, z = ss/x;
double p1 = max(dfs(x,z,i), dfs(x,y-z,need-i));
z=ss/y;
double p2 = max(dfs(z,y,i), dfs(x-z,y,need-i));
ret=min(ret,min(p1,p2));
}
return ret;
}
int main()
{
int n;
scanf(
"%lf%lf%d",&x,&y,&n);
s = x * y / n;
printf(
"%lf\n",dfs(x,y,n));
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1123159.html