2.问题描述

我的生日要到了!根据习俗,我需要将一些派分给大家。我有N个不同口味、不同大小的派。有F个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。

我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。

请问我们每个人拿到的派最大是多少?每个派都是一个高为1,半径不等的圆柱体。

输入

第一行包含两个正整数N和F,1 ≤ N, F ≤ 10 000,表示派的数量和朋友的数量。

第二行包含N个1到10000之间的整数,表示每个派的半径。

输出

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

输入样例

3 3
4 3 3 输出样例 25.133

二分法————分pie

思路如下

题意 : 给你 n 个pie,m + 1 个人,每个pie的高度相同,只是他们的半径不同,

然而这个m + 1个人还很挑剔,被分的每块 子 pie 必须只能来自 n块 pie中的其中一块

思路 : 这一题就是简单的二分,我先假设分给每个人的 子pie 为 mid ,再通过二分不断缩减精确这个,所 分子pie的假设值,,,,,,,在这样我就可以得到我们想要的值

这一题的思路还可以参照 与该题相似的题

题解如下

#include<iostream>
#include<cmath>
using namespace std; const double pi = acos(-1); //求圆周率
const int Len = 10005;
const double cha = 0.00001; //⚠️精读尽量开大一点,防止出错
int n,m;
int ar[Len];
double ans; //每个人所能分的最大子pie的大小 bool judge(double mid)
{
int m_cnt = m; //总共需要分割的数量
for(int i = 1; i <= n; i ++)
{
double V = pi * ar[i] * ar[i];
if(V >= mid)
{
m_cnt -= int(V / mid);
}
if(m_cnt <= 0)
{
return true;
}
}
return false;
} void Binary_search(double l ,double r)
{
while(r - l > cha)
{
double mid = (l + r) / 2;
if(judge(mid)) //如果我这个假设的 子pie的大小mid,是可以完全由 n 张 pie 分割出来,那么我们要考虑 能不能把 假设子pie大小mid 调大一些(通过调整下限 mn = mid),这样再进行尝试
{
ans = mid;
l = mid;
}
else //不能够分割出来m块大小为 mid的子pie,那么我们就缩小,mid值(通过调整 上线mx = mid)
{
r = mid;
}
}
printf("%.3lf\n",ans);
} int main()
{
//freopen("T.txt","r",stdin);
scanf("%d %d", &n, &m);
m ++; //包括自己,所以总人数 + 1
for(int i = 1; i <= n; i ++)
scanf("%d",&ar[i]);
Binary_search(0 , pi * Len * Len); return 0;
}

最新文章

  1. 2000条你应知的WPF小姿势 基础篇&lt;51-56 依赖属性&gt;
  2. UINavigationController的创建和相关设置---学习笔记四
  3. django url.py使用
  4. 浅谈HTTPS以及Fiddler抓取HTTPS协议
  5. Canvas drawText实现中英文居中
  6. Linux_记录ping命令的日志包括时间戳
  7. 【转】Log4net用法
  8. java 基础
  9. MVC和WebApi 使用get和post 传递参数。
  10. Core Foundation框架介绍
  11. 1833 深坑 TLE 求解
  12. iOS中NSTimer的invalidate调用之后
  13. Python3 元组(tuple)
  14. windows eclipse安装lombok插件
  15. JS实现表格使用上下左右键聚集
  16. SQL Server-执行计划教会我如何创建索引
  17. Windows下 训练Tesseract实现识别图片中的文字
  18. freopen stdout 真的更快?
  19. delphi 处理缩放图像
  20. MySQL5.7.11免安装版的安装和配置:解决MYSQL 服务无法启动问题

热门文章

  1. 钉钉小程序不用canvas在后端绘图前端用image标签获取图片的实践
  2. Python基础-检测密码,一些网站会给密码强加一些规则。
  3. Vue+axios(interceptors) 实现http拦截 + router路由拦截 (双拦截)+ 请求自带loading效果
  4. javascript中的中介者模式——迪米特法则
  5. 织梦cms文章内容页上下篇单独获得URL和文章名称修改
  6. Flink消费Kafka到HDFS实现及详解
  7. iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。
  8. (转)协议森林15 先生,要点单吗? (HTTP协议概览)
  9. 微信小程序修改request合法域名不生效及解决方法
  10. 问不倒的HTTP协议