zoukankan      html  css  js  c++  java
  • [BZOJ 1024][SCOI2009]生日快乐(DFS)

    Description

    windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。现在包括windy
    ,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。windy主刀,每一切只能平行于一块蛋糕
    的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成 N 块蛋糕,windy必须切 N-1 次。为了使得
    每块蛋糕看起来漂亮,我们要求 N块蛋糕的长边与短边的比值的最大值最小。你能帮助windy求出这个比值么?

    Solution

    爆搜可过

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    using namespace std;
    int x,y,n;
    double dfs(double x,double y,int n)
    {
        if(x<y)swap(x,y);
        if(n==1)return x/y;
        double res=1e10;
        for(int i=1;i<n;i++) 
        res=min(res,max(dfs(x,y*i/n,i),dfs(x,y*(n-i)/n,n-i)));
        for(int i=1;i<n;i++) 
        res=min(res,max(dfs(x*i/n,y,i),dfs(x*(n-i)/n,y,n-i)));
        return res;
    }
    int main()
    {
        scanf("%d%d%d",&x,&y,&n);
        printf("%lf",dfs(x,y,n));
        return 0;
    }
  • 相关阅读:
    solr 简要笔记
    JQuery select 编程时选中原有的值
    java设计模式图
    java设计模式
    qq空间微博等更多社交平台分享
    API调用开发demo
    fastJson
    小程序开发
    史上最全的机器学习资料(上)
    大数据”学习资源(下)
  • 原文地址:https://www.cnblogs.com/Zars19/p/6713669.html
Copyright © 2011-2022 走看看