Processing math: 100%

luogu P4160 [SCOI2009]生日快乐

传送门

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

更多内容详见代码

#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\n",dfs(n,x,y));
  return 0;
}


posted @   ✡smy✡  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
阅读排行:
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· Tinyfox 发生重大改版
· 对比使用DeepSeek与文新一言,了解DeepSeek的关键技术论文
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· DeepSeekV3+Roo Code,智能编码好助手
点击右上角即可分享
微信分享提示