一天一道算法题---6.3---二分运用
2014-06-03 11:58
218 查看
感谢微信平台 : 一天一道算法题 ----- 一天多一点进步-----
先来段 废话:
已经 3 4天没更了 主要还是自己 太懒了 。。。。
好 让我们 开始吧
题目链接:
touch me
是不是 有点长啊 最可恶的是 还有张 诱人的 馅饼 ---
话说 有个很好的美国系列校园青春 sex movie --- American Pie --- 美国派-----
题目大意:
有F+1个人来分N个圆形蛋糕 每个人得到的必是一整块蛋糕 (不是由几块拼在一起的)面积要相同 求每个人最多能得到多大面积的蛋糕 ( 不必是圆形)
tips:
这有点类似 你在寻找一个明确范围内寻找一个适合它的最大即最优的解
既然我已经指明了 使用 二分思想 那么你只要知道 一个半径为R的蛋糕 只能切出 ( π * r * r )/(S) 这里的S就是你要分给每个人的蛋糕的面积 因为蛋糕不能是由几个蛋糕拼起来的 那么可以确定 可以划分的蛋糕 就是 cnt = ( π*r*r)/(S)的总和 这里的cnt 需要向下取整 就是 如果3.5 就取 3 就这意思
好了 负罪感 down
贴上我的代码:
View Code
today:
最难得到的两个字叫简单,最难解释的两个字叫幸福,简单即幸福,简单的幸福。
先来段 废话:
已经 3 4天没更了 主要还是自己 太懒了 。。。。
好 让我们 开始吧
题目链接:
touch me
是不是 有点长啊 最可恶的是 还有张 诱人的 馅饼 ---
话说 有个很好的美国系列校园青春 sex movie --- American Pie --- 美国派-----
题目大意:
有F+1个人来分N个圆形蛋糕 每个人得到的必是一整块蛋糕 (不是由几块拼在一起的)面积要相同 求每个人最多能得到多大面积的蛋糕 ( 不必是圆形)
tips:
这有点类似 你在寻找一个明确范围内寻找一个适合它的最大即最优的解
既然我已经指明了 使用 二分思想 那么你只要知道 一个半径为R的蛋糕 只能切出 ( π * r * r )/(S) 这里的S就是你要分给每个人的蛋糕的面积 因为蛋糕不能是由几个蛋糕拼起来的 那么可以确定 可以划分的蛋糕 就是 cnt = ( π*r*r)/(S)的总和 这里的cnt 需要向下取整 就是 如果3.5 就取 3 就这意思
好了 负罪感 down
贴上我的代码:
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; int n , m; const int size = 10010; const double pi = 3.1415926535898 ; double area[size]; bool choose( double s ) { int sum = 0; for( int i = 0 ; i<m ; i++ ) { sum+=floor(area[i]/s); //向下取整 3.5->3 人总是整数的 } return sum>=n+1; //这是个很好的细节 相比你去写 If....else... 简洁 即美 } int main() { int t; double l , r , mid , mmax; scanf( "%d",&t ); while( t-- ) { memset( area , 0 , sizeof(area) ); mmax = 0; scanf( "%d %d",&m,&n );//n+1个人 m个蛋糕 一开始 顺序弄错了 for( int i = 0 ; i<m ; i++ ) { scanf( "%lf",&area[i] ); area[i] = area[i]*area[i]*pi; if( area[i]>mmax ) //找出这m块蛋糕的 mmax = area[i]; } l = 0; r = mmax; while( r-l>1e-5 ) { mid = l + (r-l)/2; if( choose(mid) ) l = mid; else r = mid; } printf( "%.4lf\n",l ); } return 0; }
View Code
today:
最难得到的两个字叫简单,最难解释的两个字叫幸福,简单即幸福,简单的幸福。
相关文章推荐
- 一天一道算法题---6.26---二分查找
- 一天一道算法题--6.19--二分搜索
- 一天一道算法题---6.11---大数阶乘
- 一天一道算法题--6.18--思维题
- 一天一道算法题—2015-10-15
- 一天一道算法题---6.4--中途相遇法
- 一天一道算法题--6.25--无定义
- 一天一道算法题—2015-10-22(等概率的随机数)
- 一天一道算法题---5.24.--递归
- 一天一道算法题--6.5--数学题
- 一天一道算法题---6.6---排列递推(我不会)
- 《github一天一道算法题》:堆算法接口实现(堆排序、堆插入和堆取最值并删除)
- 《github一天一道算法题》:搜索二叉树接口实现大合集
- 一天一道算法题--5.30---递归
- 一天一道算法题---6.27---二分图
- 一天一道算法题--5.29---动态规划之数塔
- 《github一天一道算法题》:并归排序
- 一天一道算法题---6.8--数学题
- 一天一道算法题--6.7--stack
- 《github一天一道算法题》:插入排序