题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969

Pie

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4513    Accepted Submission(s):
1819

Problem Description
My birthday is coming up and traditionally I'm serving
pie. Not just one pie, no, I have a number N of them, of various tastes and of
various sizes. F of my friends are coming to my party and each of them gets a
piece of pie. This should be one piece of one pie, not several small pieces
since that looks messy. This piece can be one whole pie though.

My
friends are very annoying and if one of them gets a bigger piece than the
others, they start complaining. Therefore all of them should get equally sized
(but not necessarily equally shaped) pieces, even if this leads to some pie
getting spoiled (which is better than spoiling the party). Of course, I want a
piece of pie for myself too, and that piece should also be of the same size.

What is the largest possible piece size all of us can get? All the pies
are cylindrical in shape and they all have the same height 1, but the radii of
the pies can be different.

 
Input
One line with a positive integer: the number of test
cases. Then for each test case:
---One line with two integers N and F with 1
<= N, F <= 10 000: the number of pies and the number of friends.
---One
line with N integers ri with 1 <= ri <= 10 000: the radii of the
pies.
 
Output
For each test case, output one line with the largest
possible volume V such that me and my friends can all get a pie piece of size V.
The answer should be given as a floating point number with an absolute error of
at most 10^(-3).
 
Sample Input
3
3 3
4 3 3
1 24
5
10 5
1 4 2 3 4 5 6 5 4 2
 
Sample Output
25.1327
3.1416
50.2655
 
题目大意:生日聚会上,来到的所有朋友都会领取一块饼,但是要求的是所有人都要拿到大小相同的饼!题目要求输出的是:每个人尽量拿到的最大的饼的体积是多大。这里的饼的形状是高为1的圆柱形。V=底面积*高
特别注意:1、题目里要给你自己留一块。
     2、每个人得到的饼不可以是两块饼拼接在一起的。
     3、这里的PI要用acos(-1.0),具体原因还不知道为什么,可能精度要求比较高,因为这里wa几次。0.0
 
详见代码。
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. #define PI acos(-1.0)
  8.  
  9. int main ()
  10. {
  11. int t;
  12. while (~scanf("%d",&t))
  13. {
  14. while (t--)
  15. {
  16. int n,f,r;
  17. double V[],v=,vmax;
  18. scanf("%d%d",&n,&f);
  19. f=f+;
  20. for (int i=; i<n; i++)
  21. {
  22. scanf("%d",&r);
  23. V[i]=r*r*PI;
  24. v+=V[i];
  25. //cout<<v<<endl;
  26. }
  27. vmax=v/f;
  28. double left,right,mid;
  29. left=;
  30. right=vmax;
  31. int ans;
  32. while ((right-left)>1e-)
  33. {
  34. int flag=,k=;
  35. ans=;
  36. mid=(left+right)/;
  37. for (int i=;i<n;i++)
  38. {
  39. // ans+=(int)(V[i]/mid);
  40. //if (ans>=f)
  41. //flag=1;
  42. double vv=V[i];
  43. while(vv>=mid)
  44. {
  45. vv-=mid;
  46. k++;
  47. //cout<<vv<<" "<<k<<endl;
  48. if(k==f)
  49. {
  50. flag=;
  51. break;
  52. }
  53. }
  54. if(flag==) break;
  55. }
  56. if(flag==)
  57. left=mid;
  58. else
  59. right=mid;
  60. }
  61. printf("%.4lf\n",mid);
  62. }
  63. }
  64. return ;
  65. }

另外一种

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. #define PI acos(-1.0)
  8.  
  9. int main ()
  10. {
  11. int t;
  12. while (~scanf("%d",&t))
  13. {
  14. while (t--)
  15. {
  16. int n,f,r;
  17. double V[],v=,vmax;
  18. scanf("%d%d",&n,&f);
  19. f=f+;
  20. for (int i=; i<n; i++)
  21. {
  22. scanf("%d",&r);
  23. V[i]=r*r*PI;
  24. v+=V[i];
  25. //cout<<v<<endl;
  26. }
  27. vmax=v/f;
  28. double left,right,mid;
  29. left=;
  30. right=vmax;
  31. int ans;
  32. while ((right-left)>1e-)
  33. {
  34. int flag=,k=;
  35. ans=;
  36. mid=(left+right)/;
  37. for (int i=;i<n;i++)
  38. {
  39. ans+=(int)(V[i]/mid);
  40. if (ans>=f)
  41. flag=;
  42. if(flag==) break;
  43. }
  44. if(flag==)
  45. left=mid;
  46. else
  47. right=mid;
  48. }
  49. printf("%.4lf\n",mid);
  50. }
  51. }
  52. return ;
  53. }

hdu 1969 Pie(二分查找)的更多相关文章

  1. HDU 1969 Pie(二分查找)

    Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...

  2. (step4.1.2)hdu 1969(Pie——二分查找)

    题目大意:n块馅饼分给m+1个人,每个人的馅饼必须是整块的,不能拼接,求最大的. 解题思路: 1)用总饼的体积除以总人数,得到每个人最大可以得到的V.但是每个人手中不能有两片或多片拼成的一块饼. 代码 ...

  3. HDU 1969 Pie(二分,注意精度)

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  4. HDU 1969 Pie [二分]

    1.题意:一项分圆饼的任务,一堆圆饼共有N个,半径不同,厚度一样,要分给F+1个人.要求每个人分的一样多,圆饼允许切但是不允许拼接,也就是每个人拿到的最多是一个完整饼,或者一个被切掉一部分的饼,要求你 ...

  5. 题解报告:hdu 1969 Pie(二分)

    Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...

  6. 【hoj】2651 pie 二分查找

    二分查找是一个非常主要的算法,针对的是有序的数列,通过中间值的大小来推断接下来查找的是左半段还是右半段,直到中间值的大小等于要找到的数时或者中间值满足一定的条件就返回,所以当有些问题要求在一定范围内找 ...

  7. Can you find it? HDU - 2141 (二分查找)

    Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate ...

  8. HDU 1969 Pie【二分】

    [分析] “虽然不是求什么最大的最小值(或者反过来)什么的……但还是可以用二分的,因为之前就做过一道小数型二分题(下面等会讲) 考虑二分面积,下界L=0,上界R=∑ni=1nπ∗ri2.对于一个中值x ...

  9. hdu 1969 pie 卡精度的二分

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

随机推荐

  1. phpcmsv9 同时调用多个栏目的文章标签

    V9版本默认好像没有多栏目调用的标签,例如我用{pc:content action="lists" catid ="6,7,8,9,10" num=" ...

  2. MAC搭建 PHP 环境

    安装homebrew homebrew是mac下非常好用的包管理器,会自动安装相关的依赖包,将你从繁琐的软件依赖安装中解放出来. 安装homebrew也非常简单,只要在终端中输入11: 1 ruby ...

  3. asp.net MVC4在Action间跳转 RedirectToAction 传值参数问题

    return RedirectToAction("Test", new { cw = cw, firstdirectoryid = firstdirectoryid }); 上式中 ...

  4. Java notify的使用

    半路出家学习java, 花了几分钟简单看了.在早上那个例子上稍微改了下, notify 对象上必须使用 synchronized 我的理解是在java synchronized只是个线程同步标志,但是 ...

  5. 【bzoj1877】[SDOI2009]晨跑 费用流

    题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...

  6. BZOJ4897 THUSC2016成绩单(区间dp)

    拿走一个区间的代价只与最大最小值有关,并且如果最后一次拿走包含区间右端点的子序列一定不会使答案更劣,于是设f[i][j][x][y]为使i~j区间剩余最小值为x最大值为y且若有数剩余一定包含j的最小代 ...

  7. BZOJ1013:[JSOI2008]球形空间产生器——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1013 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在 ...

  8. ZOJ3496:Assignment——题解

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3496 题目大意:A公司从S到T运货,每条路都有一个运货上限,而B公司则有p ...

  9. 基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)

    界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+ThinkJS+MySQL 计划添加基于Vue.js的后台管 ...

  10. Educational Codeforces Round 61 (Rated for Div. 2) D,F题解

    D. Stressful Training 题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有n台电脑,每台电脑都有初始电量ai,也有一个 ...