首页 > 其他 > 详细

bzoj1024: [SCOI2009]生日快乐(DFS)

时间:2017-08-31 15:33:14      阅读:215      评论:0      收藏:0      [点我收藏+]

  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

 

bzoj1024: [SCOI2009]生日快乐(DFS)

原文:http://www.cnblogs.com/Sakits/p/7458035.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!