acm课程练习2--1003
题目描述
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
题目大意
有F+1个人分N块蛋糕,每人只能分一块,且每人分到的大小必须相等
思路
随着分的蛋糕面积的增大,能分成的块数递减(注意,这不是一个线性的函数关系,因为蛋糕不能重新组合,所以会出现一块蛋糕切出相同面积的几块后,由于剩余面积不及前几块大,只能舍弃剩余面积的情况。这也是为什么不能简单地用总面积除以人数的原因)
由于有以上的逆序递减关系,因此可以用二分法来找出解。
这是一道二分法的水题。
AC代码
#include<iostream>
#include<cmath>
#include<iomanip>
#include<stdio.h>
#define max(a,b) (((a)>(b))?(a):(b))
using namespace std;
const double pi=acos(-1.0);
int main(){
//freopen("date.in","r",stdin);
//freopen("date.out","w",stdout);
int N,T,renshu,tem1,sum;
cin>>T;
double maxMian,tem2,low,up;
double mianji[10001];
while(T--){
up=0;
cin>>N>>renshu;
renshu++;
for(int i=0;i<N;i++){
cin>>tem1;
mianji[i]=pi*tem1*tem1;
up=max(mianji[i],up);
}
low=0;
sum=0;
while(up-low>1e-6){
sum=0;
tem2=(up+low)/2;
for(int j=0;j<N;j++){
sum+=((int)(mianji[j]/tem2));
}
if(sum>=renshu) low=tem2;
else up=tem2;
}
cout<<fixed<<setprecision(4)<<tem2<<endl;
}
}
acm课程练习2--1003的更多相关文章
- ACM课程学习总结
ACM课程学习总结报告 通过一个学期的ACM课程的学习,我学习了到了许多算法方面的知识,感受到了算法知识的精彩与博大,以及算法在解决问题时的巨大作用.此篇ACM课程学习总结报告将从以下方面展开: 学习 ...
- ACM课程总结
当我还是一个被P哥哥忽悠来的无知少年时,以为编程只有C语言那么点东西,半个学期学完C语言的我以为天下无敌了,谁知自从有了杭电练习题之后,才发现自己简直就是渣渣--咳咳进入正题: STL篇: 成长为一名 ...
- 华东交通大学2016年ACM“双基”程序设计竞赛 1003
Problem Description 风雨漂泊异乡路, 浮萍凄清落叶飞. 游子寻根满愁绪,一朝故土热泪归.Hey ecjtuer! 刚刚学习了二叉树的知识,现在来考察一下..给你一个深度为h的满二叉 ...
- acm课程练习2--1013(同1014)
题目描述 There is a strange lift.The lift can stop can at every floor as you want, and there is a number ...
- acm课程练习2--1005
题目描述 Mr. West bought a new car! So he is travelling around the city.One day he comes to a vertical c ...
- acm课程练习2--1002
题目描述 Now, here is a fuction: F(x) = 6 * x^7+8x^6+7x^3+5x^2-yx (0 <= x <=100)Can you find the ...
- acm课程练习2--1001
题目描述 Now,given the equation 8x^4 + 7x^3 + 2x^2 + 3x + 6 == Y,can you find its solution between 0 and ...
- 华东交通大学2015年ACM“双基”程序设计竞赛1003
Problem C Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Sub ...
- 华东交通大学2017年ACM“双基”程序设计竞赛 1003
Problem Description 有两个球在长度为L的直线跑道上运动,两端为墙.0时刻小球a以1m/s的速度从起点向终点运动,t时刻小球b以相同的速度从终点向起点运动.问T时刻两球的距离.这里小 ...
随机推荐
- Gentoo本地化设置--Locale系统介绍
locale是什么? 一份Locale是一组信息的集合,大多数程序利用它来确定特定的国家和语言设置.这些locale以及它们包含的数据是系统库的一部分,可以在大多数系统中的/usr/share/loc ...
- C - 小Y上学记——认识新同学
C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- 1.Perl 多线程:Threads
详情可查看: perldoc threads 调用线程的方法: $thr = threads->create(FUNCTION, ARGS) #This will create a new th ...
- 调试MVC项目,不关闭 IIS EXPRESS
在VS主面板打开:工具->选项->调试->编辑继续 取消选中[启用"编辑并继续"] 就OK了 (英文版的请对应相应的操作) 不过这是针对所有的调试,如果你想针 ...
- Android软件盘InputMethodManager
调用下面代码:(第一次调用显示,再次调用则隐藏,如此反复),this指activity InputMethodManager imm = (InputMethodManager)this.getSys ...
- Java中的Builder模式
package com.mc.bsfram.others.entity; public class Person { private String name; private String addre ...
- POJ 1611 The Suspects(简单并查集)
( ̄▽ ̄)" #include<iostream> #include<cstdio> using namespace std; ]; void makeSet(int ...
- print a float number with 3 digits following
just use the java's printf function. It is like C's printf. System.out.printf("%.3f\n", x) ...
- 解决“Xlib.h not found when building graphviz on Mac OS X 10.8”错误
After installing XQuartz you may add a symlink to your X11 installation folder by just entering (安装X ...
- 在JavaScript中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...