DFS
刚开始没看到矩形。。。以为是立体的。。。
这道题想到的话就变成**题了。
因为每个人必须获得相同面积的蛋糕,所以每一刀都必须切在 n n 等分点上(为当前剩下的刀数)。当 n=1 n = 1 时答案是确定的。于是只要递归下去计算就好了。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,x,y;
double ans=1e18;
inline double dfs(double x,double y,int n){
if (x<y) swap(x,y); if (n==1) return x/y;
double ans=1e18;
for (int i=1;i<=n/2;i++){
//分开讨论一下就好了
ans=min(ans,max(dfs(x*i/n,y,i),dfs(x*(n-i)/n,y,n-i)));
ans=min(ans,max(dfs(x,y*i/n,i),dfs(x,y*(n-i)/n,n-i)));
}
return ans;
}
int main(){
scanf("%d%d%d",&x,&y,&n);
return printf("%.6f",dfs(x,y,n)),0;
}