题目链接

题目

题目描述

windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。现在包括windy ,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。

windy主刀,每一切只能平行于一块蛋糕 的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成 N 块蛋糕,windy必须切 N-1 次。

为了使得每块蛋糕看起来漂亮,我们要求 N块蛋糕的长边与短边的比值的最大值最小。你能帮助windy求出这个比值么?

输入描述

包含三个整数,X Y N。

1 ≤ X,Y ≤ 10000 ; 1 ≤ N ≤ 10

输出描述

包含一个浮点数,保留6位小数。

示例1

输入

5 5 5

输出

1.800000

备注

100%的数据,满足\(1 \le X,Y \le 10000 ; 1 \le N \le 10\) 。

题解

知识点:DFS。

最大值最小很容易想到二分,然鹅答案并不单调2333。

发现 \(N\) 很小考虑暴搜。对于长宽为 \(x\) 和 \(y\) 的一块蛋糕,如果要切成 \(n\) 块面积相等的,那么每块面积是 \(\frac{xy}{n}\) ,则一定要切在长上 \(\frac{x}{n}\) 的倍数点或宽上 \(\frac{y}{n}\) 的倍数点上,其他切法都不能保证每块都是 \(\frac{xy}{n}\) 。

方法有了就可以搜索了。对于每一块蛋糕(包括原蛋糕)切长或宽切 \(i\) 倍的点,\(i\) 只需到 \(\lfloor \frac{n}{2} \rfloor\) 即可,再大会对称。然后再搜索切出来两块的答案,取两块中的长宽比最大值作为这种切法的答案,如果 \(n=1\) 返回长宽比作为答案。然后取长宽两种切法的所有切点中答案的最小值返回,作为这整块的蛋糕切出来的长宽比最大值的最小值。

时间复杂度 \(O(?)\)

空间复杂度 \(O(n)\)

代码

#include <bits/stdc++.h>

using namespace std;

double ans = 0;
double dfs(double x, double y, int n) {///长x宽y的蛋糕要切成n块
if (n == 1) return max(x, y) / min(x, y);
double dx = x / n, dy = y / n, ans = 1e9;///每刀只能切在x/n或y/n的倍数上
for (int i = 1;i <= (n >> 1);i++) {///切出1~n/2块的大小,再大就对称的了
double l = max(dfs(i * dx, y, i), dfs(x - i * dx, y, n - i));///切在长上
double w = max(dfs(x, i * dy, i), dfs(x, y - i * dy, n - i));///切在宽上
ans = min({ ans, l, w });///取两种情况的最小值
}
return ans;
} int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
double x, y;
int n;
cin >> x >> y >> n;
cout << fixed << setprecision(6) << dfs(x, y, n) << '\n';
return 0;
}

NC20272 [SCOI2009]生日快乐的更多相关文章

  1. BZOJ 1024: [SCOI2009]生日快乐 dfs

    1024: [SCOI2009]生日快乐 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  2. BZOJ 1023 [SCOI2009]生日快乐

    1024: [SCOI2009]生日快乐 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1729  Solved: 1219[Submit][Statu ...

  3. BZOJ 1024 [SCOI2009]生日快乐 (搜索)

    1024: [SCOI2009]生日快乐 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3025  Solved: 2201[Submit][Statu ...

  4. 【BZOJ1024】[SCOI2009]生日快乐(搜索)

    [BZOJ1024][SCOI2009]生日快乐(搜索) 题面 BZOJ 洛谷 题解 看到这个数据范围就感觉是爆搜.我们爆搜左右分成多少块,这样子左右的面积已知,再枚举一下横着切还是竖着切,这样子就可 ...

  5. bzoj千题计划115:bzoj1024: [SCOI2009]生日快乐

    http://www.lydsy.com/JudgeOnline/problem.php?id=1024 枚举横着切还是竖着切,一边儿分多少块 #include<cstdio> #incl ...

  6. 【bzoj1024】[SCOI2009]生日快乐

    1024: [SCOI2009]生日快乐 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2372  Solved: 1717[Submit][Statu ...

  7. BZOJ1024 [SCOI2009]生日快乐

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  8. BZOJ 1024: [SCOI2009]生日快乐

    Description 将一个 \(x\times y\) 的矩形分成 \(n\) 块,让最长边:最短边 最小. Sol 搜索. \(n\) 只有 \(10\) 写一个类似于记搜的东西就好了. Cod ...

  9. 1024: [SCOI2009]生日快乐

    暴力题,N<=10,没注意到平均分,读题真是.. 我们对于一个矩形分成两块进行搜.然后求较大值. ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n ...

  10. 1024: [SCOI2009]生日快乐 - BZOJ

    Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋 ...

随机推荐

  1. spring注入的几种方式

    本文为博主原创,未经允许不得转载: Spring注入有以下几种方式: 构造方法注入:通过构造方法实现依赖注入.在类的构造方法中使用@Autowired注解注入需要的依赖类. Setter方法注入:通过 ...

  2. docker 安装 nacos

    转载请注明出处: https://www.jianshu.com/p/54f6da71ac48

  3. 分享一个简单的使用js格式化json的代码

    今天给大家分享一段json格式化代码. 假设json字符串是: {"name":"刘德华","age":25.2,"birthda ...

  4. SV task and function

    内容 system verilog过程语句:自增和自减操作符 逻辑比较操作符 逻辑值为1bit inside语句 变量类型转换 强制类型转换:$cast() 变量位宽转换 变量符号位转换 for循环语 ...

  5. 小程序:Now you can provide attr `wx:key` for a `wx:for` to improve performance. 的解决方案

    在wx:for后面添加wx:key="key" 可消除警告 <view wx:for="{{thisWeekMovies}}" wx:for-index= ...

  6. [转帖]Python学习之十七_django的入门

    Python学习之十七_django的入门 前言 Python学习了一周, 慢慢总结摸索. 自己还是有多不会的地方. 感慨这些年浪费的时间. 所有的时间都是选择大于努力. 努力最多感动自己. 生活是需 ...

  7. [转帖]badboy与jmeter的结合使用

    https://blog.csdn.net/weixin_41754309/article/details/107106855 欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习 ...

  8. [转帖]不同CPU性能大PK

    https://plantegg.github.io/2022/01/13/%E4%B8%8D%E5%90%8CCPU%E6%80%A7%E8%83%BD%E5%A4%A7PK/ 前言 比较Hygon ...

  9. 【转帖】奇淫技巧 | route命令设置网络优先级

    奇淫技巧 | route命令设置网络优先级 https://blog.csdn.net/DynmicResource/article/details/120134745 1. 背景 在生活中的会经常遇 ...

  10. Jumper Server 堡垒机搭建过程

    Jumper Server 堡垒机搭建过程 背景说明 公司组织考核, 要对一套系统进行安全设置.有一个项目是使用堡垒机进行登录 堡垒机有多种用途,可以实现日志审计和安全设置等. 买商业设备的话太困难了 ...