BZOJ1024: [SCOI2009]生日快乐
2016-06-23 21:54
239 查看
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1024
题目大意:windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。现在包括windy
,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。windy主刀,每一切只能平行于一块蛋糕
的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成 N 块蛋糕,windy必须切 N-1 次。为了使得
每块蛋糕看起来漂亮,我们要求 N块蛋糕的长边与短边的比值的最大值最小。你能帮助windy求出这个比值么?
题解:注意:重要的事说三遍:相同面积,相同面积,相同面积;于是我就被坑了,首先想到二分,然后不知道怎么验证答案,后来想到一个贪心,是错的。。。。。
于是默默地重新读题,发现是暴搜就可以了,毕竟数据范围小。
代码:
View Code
题目大意:windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。现在包括windy
,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。windy主刀,每一切只能平行于一块蛋糕
的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成 N 块蛋糕,windy必须切 N-1 次。为了使得
每块蛋糕看起来漂亮,我们要求 N块蛋糕的长边与短边的比值的最大值最小。你能帮助windy求出这个比值么?
题解:注意:重要的事说三遍:相同面积,相同面积,相同面积;于是我就被坑了,首先想到二分,然后不知道怎么验证答案,后来想到一个贪心,是错的。。。。。
于是默默地重新读题,发现是暴搜就可以了,毕竟数据范围小。
代码:
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #define D double #define ll long long #define INF 1e9 using namespace std; int x,y,n; ll a,b,c; D dfs(D x, D y, int cnt) { D ans=INF; if (cnt==1) return max(x/y,y/x); for (int i=1; i<=(cnt>>1); i++) { ans=min(ans,max(dfs(x/cnt*i,y,i),dfs(x/cnt*(cnt-i),y,cnt-i))); ans=min(ans,max(dfs(x,y/cnt*i,i),dfs(x,y/cnt*(cnt-i),cnt-i))); } return ans; } int main() { scanf("%d%d%d",&x,&y,&n); D ans=dfs(x,y,n); printf("%0.6lf",ans); }
View Code
相关文章推荐
- 我的SPARK调试java代码
- 深入探讨 Java 类加载器
- 2. 代理模式-为别人做嫁衣
- 网站如何突破瓶颈
- ubuntu14.04安装opencv2.4.9
- Android IntentService完全解析 当Service遇到Handler
- 个人总结
- 以操作系统的角度述说线程与进程
- Restrictions运算符
- 第二冲刺阶段个人博客
- 链接指示符extern “C”
- Android 基于Message的进程间通信 Messenger完全解析
- Git常用命令总结2
- Git 常用命令整理1
- IO流操作规律
- 如何保护你的linux操作系统
- 微信支付PHP SDK —— 公众号支付代码详解
- 输出100-999之间所有的水仙花数
- 操作系统面试—进程同步
- 进程和线程的联系和区别