1 条题解
-
1
暴力 dfs,每次枚举横向切多少刀,分成两个子问题递归即可。纵向同理。
#include<bits/stdc++.h> using namespace std; const int inf=0x3f3f3f3f; double dfs(double n,double m,int k){ if(k==1){ if(n<m)swap(n,m); return n/m; } double ans=inf; double tx=n/k,ty=m/k; for(int i=1;i<=k/2;i++){ double mx1=max(dfs(tx*i,m,i),dfs(n-tx*i,m,k-i)); double mx2=max(dfs(n,ty*i,i),dfs(n,m-ty*i,k-i)); ans=min({ans,mx1,mx2}); } return ans; } int main(){ double n,m;int k; scanf("%lf%lf%d",&n,&m,&k); printf("%.6lf",dfs(n,m,k)); return 0; }
- 1
信息
- ID
- 1024
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 15
- 已通过
- 14
- 上传者