传送门:BZOJ1024
首先注意到以下事实:每一刀必然割在
然后就可以深搜了。
代码上的小细节见下。
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
double ans;
double x,y;
int n;
double Dfs(double x,double y,int len)
{
if(len==1)
return max(x,y)/min(x,y);
double ans=0x7fffffff;
for(int i=1;i<len;i++)
ans=min(ans,min(max(Dfs(x/len*i,y,i),Dfs(x/len*(len-i),y,len-i)),max(Dfs(x,y/len*(len-i),len-i),Dfs(x,y/len*i,i))));
return ans;
}
void Readdata()
{
freopen("loli.in","r",stdin);
cin>>x>>y>>n;
}
void Close()
{
fclose(stdin);
fclose(stdout);
}
int main()
{
Readdata();
printf("%.6lf",Dfs(x,y,n));
Close();
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/le_ballon_rouge/article/details/47663677