bzoj1024搜索

进度1/10mark(感觉完不成了)

事实上我刚看到题目一下子慌了,,,我在想怎么二分一块的长宽,然后验证

然而极其难写

于是想有没有暴力,举一些例子模拟一下

然后发现切割是有很明显的限制的:每次切割两边的面积一定是整数比,于是每次可以割的地方都不到10了

那就只能暴力了

 1 #include <cstdio>
 2 #define INF 100000
 3 int x,y,n;
 4 inline double min(double a,double b){return(a<b)?a:b;}
 5 inline double max(double a,double b){return(a>b)?a:b;}
 6 double find(double x,double y,int n)
 7 {
 8     if(n==1) return(x>y)?(x/y):(y/x);
 9     double ans=INF;
10     for(int i=1;i<=n/2;i++)
11         ans=min(ans,min(max(find(x/n*i,y,i),find(x/n*(n-i),y,n-i)),max(find(x,y/n*i,i),find(x,y/n*(n-i),n-i))));
12     return ans;
13 }
14 int main()
15 {
16     scanf("%d%d%d",&x,&y,&n);
17     printf("%.6f",find(x,y,n));
18     return 0;
19 }
原文地址:https://www.cnblogs.com/wanglichao/p/5886627.html