BZOJ 1023 [SCOI2009]生日快乐
2015-07-19 16:58
148 查看
1024: [SCOI2009]生日快乐
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1729 Solved: 1219
[Submit][Status][Discuss]
Description
windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。 windy主刀,每一切只能平行于一块蛋糕的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成 N 块蛋糕,windy必须切 N-1 次。为了使得每块蛋糕看起来漂亮,我们要求 N 块蛋糕的长边与短边的比值的最大值最小。你能帮助windy求出这个比值么?Input
包含三个整数,X Y N。Output
包含一个浮点数,保留6位小数。Sample Input
5 5 5Sample Output
1.800000HINT
【数据规模和约定】100%的数据,满足 1 <= X,Y <= 10000 ; 1 <= N <= 10 。
Source
题解:刚从病痛中挣扎出来就碰上这种题,心情大好呀~窝萌看到面积要相等,那么每次切完的面积必然是1/n的整数倍吧?那么爆搜好了。
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> #include<cstring> #define PAU putchar(' ') #define ENT putchar('\n') using namespace std; double dfs(double x,double y,int n){ double ans=10001.0; if(x<y)swap(x,y);if(n==1)return x/y; for(int i=1;i<n;i++){ ans=min(ans,max(dfs(x/n*i,y,i),dfs(x/n*(n-i),y,n-i))); ans=min(ans,max(dfs(y/n*i,x,i),dfs(y/n*(n-i),x,n-i))); }return ans; } inline int read(){ int x=0,sig=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')sig=-1;ch=getchar();} while(isdigit(ch))x=10*x+ch-'0',ch=getchar(); return x*=sig; } inline void write(int x){ if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x; int len=0,buf[15];while(x)buf[len++]=x%10,x/=10; for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return; } double x,y;int n; void init(){ x=read();y=read();n=read(); printf("%.6lf",dfs(x,y,n)); return; } void work(){ return; } void print(){ return; } int main(){init();work();print();return 0;}
相关文章推荐
- 利用JS做到隐藏div和显示div
- 模板
- Spring基于注解@AspectJ的AOP
- python脚本语言2
- poj 2632Crashing Robots 暑假第8题 大模拟,水题
- 2.6 Python里面如何实现tuple和list的转换?
- 02_java关键字、表识符、注释、进制转换、补码反码、数据类型转换
- GIT 学习四 (连接github)
- HBase
- 一种简单并行的轨迹关联算法及其在小目标检测中的应用
- Linux学习与总结:5-Linux用户与权限管理
- 20-01 UITableView 表视图
- Hive
- 数据结构之线性结构的离散存储(循环列表和双向链表)
- IP地址首部详解
- Git入门
- 数组中的逆序对
- c++ 隐藏规则
- django框架简介
- 2.4 Python是如何进行类型转换的?