zoukankan      html  css  js  c++  java
  • luogu P4160 [SCOI2009]生日快乐

    传送门

    考虑因为每个人的蛋糕体积要相等,如果切了一刀,那么要使得分当前蛋糕的人根据分成的两部分蛋糕的体积分成两部分人,所以假设当前有n人,切的这一刀要是在x或y的(frac{k}{n}(kin N_+,kin [1,n]))处,然后两边分别有(k)(n-k)个人分,所以分治做下去救星了

    更多内容详见代码

    #include<bits/stdc++.h>
    #define LL long long
    #define il inline
    #define re register
    #define db double
    #define eps (1e-5)
    
    using namespace std;
    il LL rd()
    {
        LL x=0,w=1;char ch=0;
        while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
        while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
        return x*w;
    }
    db dfs(int n,db x,db y)
    {
      if(x<y) swap(x,y);
      if(n==1) return x/y;
      db an=1e18;
      for(int i=1;i<=n/2;i++) an=min(an,max(dfs(i,x/(db)n*(db)i,y),dfs(n-i,x/(db)n*(db)(n-i),y)));
      for(int i=1;i<=n/2;i++) an=min(an,max(dfs(i,x,y/(db)n*(db)i),dfs(n-i,x,y/(db)n*(db)(n-i))));
      return an;
    }
    
    int main()
    {
      db x=rd(),y=rd();
      int n=rd();
      if(x<y) swap(x,y);
      printf("%.6lf
    ",dfs(n,x,y));
      return 0;
    }
    
    
    
  • 相关阅读:
    RSA使用
    C#获取主机信息
    NSIS打包软件使用
    C#获取局域网主机
    C#实现Web链接启动应用程序
    4.布局介绍
    Server Sql 多表查询、子查询和分页
    C# File类常用方法
    Vue 使用技巧手记
    前端面试题手记
  • 原文地址:https://www.cnblogs.com/smyjr/p/9806935.html
Copyright © 2011-2022 走看看