题目链接

题目描述

我的生日要到了!根据习俗,我需要将一些派分给大家。我有 N 个不同口味、不同大小的派。有 F 个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。
我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。
请问我们每个人拿到的派最大是多少?每个派都是一个高为 1,半径不等的圆柱体。

输入格式
第一行包含两个正整数两个正整数 N 和 F,表示派的数量和朋友的数量。
第二行包含 N 个 1 到 10000 之间的整数,表示每个派的半径。

输出格式
输出每个人能得到的最大的派的体积,精确到小数点后三位。

Sample Input

3 3
4 3 3

Sample Output

25.133

思路

二分,思路都在代码里了,加注释的函数应该是精度不够的原因,过不了。

C++代码:

#include<bits/stdc++.h>
#define pi  acos(-1.0)
using namespace std;
double s[10010];
int r[10010], n, m, f;double ave(double mid)
{int sum = 0;for(int i = 0; i < n; i++)      //一共有n个pie sum += (int)(s[i]/mid);return sum;
}/*这个不行,可能是精度不够
double ave(double mid)
{double sum = 0;for(int i = 0; i < n; i++)sum += s[i];return sum / mid;
}
*/
int main()
{while(cin >> n >> f){for(int j = 0; j < n; j++){cin >> r[j];s[j] = pi * r[j] * r[j];}double left = 0.0, right = 1000000000.0;int s = 100;              //二分查找循环100次足够了 double ans;for(int k = 0; k < s; k++){double mid = (left + right) / 2.0;if(ave(mid) >= f + 1)  //pie分成了ave(mid)份,份数多于人的数量,pie的尺寸还可以继续增大{ans = mid;          //所以每人至少分得1份,每份的分量大约是mid           //mid * ave(mid) == sum (pie的总面积) left = mid;          //寻求更大的半径 }else right = mid;       //份数少于人的数量,pie的尺寸需要缩小 }printf("%.3lf\n",ans);}return 0;
}

C/C++编程学习 - 第19周 ⑩ 派相关推荐

  1. C/C++编程学习 - 第19周 ③ 不与最大数相同的数字之和

    题目链接 题目描述 输出一个整数数列中不与最大数相同的数字之和. 输入格式 输入分为两行: 第一行为N(N为接下来数的个数,N <= 100): 第二行为N个整数,数与数之间以一个空格分开,每个 ...

  2. C/C++编程学习 - 第2周 ⑥ 收集瓶盖赢大奖

    题目链接 题目描述 蒜厂最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有 10 个印有"幸运".或 20 个印有"鼓励"的瓶盖,就可以兑换 ...

  3. C/C++编程学习 - 第6周 ⑦ 分离整数的各个数位

    题目链接 题目描述 小蒜给了你一个整数,要求从个位开始分离出它的每一位数字. 输入格式 输入一个整数,整数在 1 到 108 之间. 输出格式 从个位开始按照从低位到高位的顺序依次输出每一位数字.数字 ...

  4. C/C++编程学习 - 第7周 ⑥ 合影效果

    题目链接 题目描述 蒜头君和朋友们去爬香山,为美丽的景色所陶醉,想合影留念.如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右 ...

  5. C/C++编程学习 - 第4周 ⑦ 判断是否为两位数

    题目链接 题目描述 判断一个正整数是否是两位数(即大于等于 10 且小于等于 99). 蒜头君:很简单的,快来通过它吧! 输入格式 一个正整数,不超过 1000. 输出格式 一行.若该正整数是两位数, ...

  6. C/C++编程学习 - 第5周 ② 向左看齐

    题目链接 题目描述 上体育课时,某班 n 个小朋友排成一列.随着体育老师的一声"向左看齐",同学们都朝着左边看.现在每个同学想知道左边的同学中,有多少人的身高比自己矮. 输入格式 ...

  7. C/C++编程学习 - 第6周 ⑤ 球弹跳高度的计算

    题目链接 题目描述 蒜头君让一个球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下.编程计算气球在第 10 次落地时,共经过多少米?第 10 次反弹多高? 输入格式 输入一个整数 ...

  8. C/C++编程学习 - 第7周 ④ 鸡尾酒疗法

    题目链接 题目描述 鸡尾酒疗法,原指 "高效抗逆转录病毒治疗"(HAART),由美籍华裔科学家何大一于 1996 年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病.该疗 ...

  9. C/C++编程学习 - 第5周 ⑧ 判断直角三角形

    题目链接 题目描述 输入三个整数,判断用这三个整数做边长是否能构成一个直角三角形. 输入格式 输入三个整数. 输出格式 能否构成直角三角形,如能输出:"yes",若不能,输出:&q ...

最新文章

  1. Codeforces Round #545 B. Circus
  2. 暗通道优先的图像去雾算法(上)
  3. SpringBoot取出信息
  4. activiti 图片
  5. js设置和清除cookie
  6. YbtOJ#20089-[NOIP2020模拟赛B组Day10]平衡的树【贪心】
  7. MVC简单实现插件Demo-从底层理解MVC路由匹配浏览器请求的URL
  8. 库克:iPhone 12更新换代用户数达到顶峰
  9. Linux下的编曲软件,MuseScore(免费作曲编曲软件) V3.0.1 Linux版
  10. 2013年计算机运算速度慢,win7电脑运行速度很慢怎么提速|三个win7提速的技巧
  11. word中如何将所有同一级标题统一格式
  12. MySQL 之union all 与 order by 同时出现问题
  13. 个人财务管理系统beancount-gs
  14. Rosalind第88题:Counting Rooted Binary Trees
  15. Ubuntu安装拼音输入法
  16. 8种bootstrap团队会员头像样式代码
  17. 在 HTML 中使用 ARIA 的规则
  18. 肯德基创始人,在1009次失败后...
  19. linux scons源码安装,linux 安装scons
  20. 在项目中使用Liquibase

热门文章

  1. linux分辨率自动恢复,Linux系统Manjaro分辨率调整恢复
  2. 转贴: 人应该为自己而活
  3. 我的物联网项目(十八) 城市合伙人战略
  4. android屏幕省电,AMOLED屏幕省电吗 AMOLED屏幕耗电测评测
  5. XCPC2020赛季流水账
  6. mysql locate不走索引_索引失效的情况及原因定位
  7. 黑苹果安装使用 macos10.14 on vmware15 or virtualbox
  8. python QRcode
  9. 组合电路中的竞争与冒险
  10. 批量更新用户mous余额