• bzoj 1024 SCOI2009 生日快乐


         一上来没思路……

        但是由于每块蛋糕面积相等,又因为每次切必须切成两半,所以每半的面积都是每块蛋糕面积的倍数。

        枚举切下来的蛋糕应该还被分为多少块蛋糕,计算切割的地方,分X 和 Y, 递归搜索。

        上代码:

    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #define inf 0x7f7f7f7f
    using namespace std;
    
    int num;
    double X, Y;
    
    double dfs(int n, double x, double y)
    {
        if (n == 1) return max(x, y) / min(x, y);
        double d = (double)n;
        double ans = inf;
        for (int i = 1; i < n; ++i)
        {
            ans = min(ans, max(dfs(i, x/d*i, y), dfs(n-i, x/d*(n-i), y)));
            ans = min(ans, max(dfs(i, x, y/d*i), dfs(n-i, x, y/d*(n-i))));
        }
        return ans;
    }
    
    int main()
    {
        scanf("%lf%lf%d", &X, &Y, &num);
        printf("%lf
    ", dfs(num, X, Y));
        return 0;
    }
  • 相关阅读:
    ASP.NET使用SWFUpload上传大文件教学
    Gridview自定义分页(转载)
    扩展GridView之个性分页(转载)
    畅通工程
    一个人的旅行
    Stockbroker Grapevine
    Arbitrage
    More is better
    HDU Today
    Minimum Transport Cost
  • 原文地址:https://www.cnblogs.com/handsomeJian/p/3999452.html
Copyright © 2020-2023  润新知