ACM pie
我的朋友们很烦人,如果他们中的一个比其他人得到更大的一块,他们就会开始抱怨。因此,他们所有人都应该得到同样大小(但不一定是同样的形状)的碎片,即使这导致了一些馅饼被破坏(这比破坏聚会更好)。 当然,我也想要一块馅饼,那块也应该是同样大小的。
我们所有人都可以获得最大的可能尺寸是多少?所有的馅饼都是圆柱形的,它们都具有相同的高度1,但馅饼的半径可能不同的。
Input
一行为正整数:测试用例数。 然后对于每个测试用例:
---一行与两个整数N和F与1 <= N,F <= 10000:饼的数量和朋友的数量。
---一行N个整数ri与1 <= ri <= 10000:馅饼的半径。
Output
对于每个测试用例,输出一行,最大可能体积V,这样我和我的朋友们都能得到一块馅饼的大小,答案应该是作为一个浮点数而且绝对误差最多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 Output25.1327
3.1416
50.2655 就是我要开party了,朋友来了,我要均分n块馅饼给自己和朋友们,但是呢,每个人只能得到一块馅饼,不能有拼接的馅饼块。
按道理 人数应该为f+1了,
想一想,一种馅饼可能分给好几人食用,我可以用二分法在0和最大馅饼块之间先求出预设的最大值 ,然后让每种馅饼除以预设的最大值,取整,得到块数,当所有的累加的块数大于总人数的时候,即该值满足题意.
#include<bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
double pie[]; int t,n,f;/*t:次数 n:馅饼的数量 f:朋友数量,因为自己也要分馅饼,所以记得要有 f++*/
bool cmp(double a,double b)
{
return a > b;
}
int judge(double mid) /*判断预设的最大值是否满足题意*/
{
int sum = ;
for(int i = ; i < n; i++)
{
sum += int(pie[i]/mid);
if(sum >= f)
return ;
}
return ;
}
int main()
{
while(cin>>t)
{ while(t--)
{
double right,left,mid;
scanf("%d %d",&n,&f);
f++;
for(int i = ;i < n; i++)
{
scanf("%lf",&pie[i]);
pie[i] = pie[i]*pie[i]*PI; /*改为存储pie的体积,方便之后的运算*/
}
sort(pie,pie+n,cmp); /*排序完成之后 直接拿第一个来开刀*/
left = ;
right = pie[];
while(right - left > 1e-)
{
mid = (left+right)/;
if(judge(mid))
left = mid;
else
right = mid;
}
printf("%.4lf\n",mid);
}
} return ;
}
一些奇奇怪怪的事情:(其实,不是很奇怪,就是取值范围的问题)
当right-left>1e-5时,输出mid是WA 输出left反而是AC
当right-left>le-6或者1e-7时 输出mid是AC
当right - left>1e-8或者更小的时候,就OLE了
ACM pie的更多相关文章
- acm数学(转)
这个东西先放在这吧.做过的以后会用#号标示出来 1.burnside定理,polya计数法 这个大家可以看brudildi的<组合数学>,那本书的这一章写的很详细也很容易理解.最好能 ...
- 分馅饼 Pie
Pie 链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/C 题目: Problem Description ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- HDU-1969 Pie
http://acm.hdu.edu.cn/showproblem.php?pid=1969 Pie Time Limit: 5000/1000 MS (Java/Others) Memory ...
- 2006 ACM Northwestern European Programming Contest C题(二分求最大)
My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numberN o ...
- ACM数学
1.burnside定理,polya计数法 这个专题我单独写了个小结,大家可以简单参考一下:polya 计数法,burnside定理小结 2.置换,置换的运算 置换的概念还是比较好理解的,< ...
- hdu 1969 Pie(二分查找)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969 Pie Time Limit: 5000/1000 MS (Java/Others) Me ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
随机推荐
- AOV网络和Kahn算法拓扑排序
1.AOV与DAG 活动网络可以用来描述生产计划.施工过程.生产流程.程序流程等工程中各子工程的安排问题. 一般一个工程可以分成若干个子工程,这些子工程称为活动(Activity).完成了这些活动 ...
- js中的栈与堆的讲解/基本数据类型与引用类型的讲解
1.栈(stack)和堆(heap) stack为自动分配的内存空间,它由系统自动释放:而heap则是动态分配的内存,大小不定也不会自动释放. 2.基本类型和引用类型 基本类型:存放在栈内存中的简单数 ...
- 物联网 MQTT 服务质量级别
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 翻译人:Tnecesoc,该成员来自云+社区翻译社 消息队列遥测传输(MQTT)是一种客户端服务器发布 / 订阅消息传输协议.它轻量,开放, ...
- 通过TCP实现显示屏截图请求及回传
在很多业务场景下,需要监视显示屏画面.在实时性要求不高的情况下,可以通过定时对显示屏进行截图及回传实现. 本文通过C#中提供的TCP通信功能,对该功能的实现进行简单描述. 首先,该功能的实现分为客户端 ...
- python读取excel时,数字自动转化为float
xlrd模块去读excel时会将数字类型的自动转化为浮点数,这是一个小坑.在网上查了一下,该模块的作者也说过Excel treats all numbers as floats. In general ...
- [ABP]浅谈工作单元 在整个 ABP 框架当中的应用
ABP在其内部实现了工作单元模式,统一地进行事务与连接管理. 其核心就是通过 Castle 的 Dynamic Proxy 进行动态代理,在组件注册的时候进行拦截器注入,拦截到实现了 Unit Of ...
- 走在spring的路上。。。。
一些spring的概念理解: 1.为什么需要spring? spring与我们平时用的工厂模式最大的差别在于,工厂模式设计还需要单独去建一个工厂类并去维护它, 而spring可只通过配置文件便可创建并 ...
- [LeetCode] Longest Harmonious Subsequence 最长和谐子序列
We define a harmonious array is an array where the difference between its maximum value and its mini ...
- 机器学习技法:14 Radial Basis Function Network
Roadmap RBF Network Hypothesis RBF Network Learning k-Means Algorithm k-Means and RBF Network in Act ...
- python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)
转载出处:药少敏 ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...