zoukankan      html  css  js  c++  java
  • bzoj 1024: [SCOI2009]生日快乐

    Description

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

    Solution

    QAQ,花了10分种猜了一个结论,如果满足最大比值最小,那么每一次等分切,切出来面积相等.
    哈哈写完后终于发现题目中已经给了要求...233...
    (Nleq10),所以直接乱搜答案搜对即可,考虑枚举分成几等分,竖着分还是横着分,更新答案即可
    复杂度: (O(10!))

    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    const int inf=2e8;
    double dfs(double n,double m,int k){
       if(k==1){
          double pie=max(n,m)/min(n,m);
          return pie;
       }
       double ret=inf,tmp;
       for(int i=1;i<k;i++){
          tmp=max(dfs(i*n/k,m,i),dfs(n-i*n/k,m,k-i));
          ret=min(ret,tmp);
          tmp=max(dfs(n,i*m/k,i),dfs(n,m-i*m/k,k-i));
          ret=min(ret,tmp);
       }
       return ret;
    }
    void work()
    {
       int n,m,k;
       cin>>n>>m>>k;
       printf("%.6lf
    ",dfs(n,m,k));
    }
    
    int main()
    {
    	work();
    	return 0;
    }
    
    
  • 相关阅读:
    Java实现蓝桥杯正则切分
    VS2013 预定义的宏
    VS2015编译boost1.62
    linux 下Qt WebEngine 程序打包简单记录
    Visual Studio 默认保存为UTF8编码
    微型Http服务器Tiny Http Server
    Bootstrap Paginator分页插件
    Web前端框架与类库
    开发与常用工具清单
    程序员修炼之道
  • 原文地址:https://www.cnblogs.com/Yuzao/p/7652684.html
Copyright © 2011-2022 走看看