1024: [SCOI2009]生日快乐

时间:2023-03-09 09:08:24
1024: [SCOI2009]生日快乐

暴力题,N<=10,没注意到平均分,读题真是。。

我们对于一个矩形分成两块进行搜。然后求较大值。

ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n-i);

就是分成两块,分别递归的样子。

 #include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<iostream>
using namespace std; double dfs(double x,double y,int n)
{
if (n==) return max(x/y,y/x);
double tmp=10e10; for (int i=;i<n;i++){
tmp=min(tmp,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n-i)));
tmp=min(tmp,max(dfs(x/n*i,y,i),dfs(x/n*(n-i),y,n-i)));
}
return tmp;
} int main()
{
double x,y;
int n;
cin>>x>>y>>n;
printf("%.6lf\n",dfs(x,y,n));
return ;
}