dfs(x,y,n)表示长为x,宽为y,切n块

  每次砍的一定是x/n的倍数或者y/n的倍数

#include<bits/stdc++.h>
using namespace std;
const int inf=1e9;
int x,y,n;
double dfs(double x,double y,int n)
{
    if(n==1)return max(x,y)/min(x,y);
    double sum=1.0*inf;
    double xx=x/n,yy=y/n;
    for(int i=1;i<=(n>>1);i++)
    sum=min(sum,max(dfs(xx*i,y,i),dfs(x-xx*i,y,n-i))),
    sum=min(sum,max(dfs(x,yy*i,i),dfs(x,y-yy*i,n-i)));
    return sum;
}
int main()
{
    scanf("%d%d%d",&x,&y,&n);
    printf("%.6lf\n",dfs(1.0*x,1.0*y,n));
}
View Code

相关文章:

  • 2022-12-23
  • 2021-10-30
  • 2021-09-04
  • 2021-10-14
  • 2021-10-25
  • 2021-10-24
  • 2021-11-18
  • 2021-06-02
猜你喜欢
  • 2021-08-12
  • 2021-06-07
  • 2021-12-03
  • 2021-07-27
  • 2021-11-01
相关资源
相似解决方案