首页 > 代码库 > 1024: [SCOI2009]生日快乐

1024: [SCOI2009]生日快乐

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

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

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

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

 1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 #include<math.h> 5 #include<iostream> 6 using namespace std; 7  8 double dfs(double x,double y,int n) 9 {10    if (n==1) return max(x/y,y/x);11    double tmp=10e10;12 13    for (int i=1;i<n;i++){14    tmp=min(tmp,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n-i)));15    tmp=min(tmp,max(dfs(x/n*i,y,i),dfs(x/n*(n-i),y,n-i)));16    }17    return tmp;18 }19 20 int main()21 {22     double  x,y;23     int n;24     cin>>x>>y>>n;25     printf("%.6lf\n",dfs(x,y,n));26     return 0;27 }
View Code

 

1024: [SCOI2009]生日快乐