HDU 1969 Pie【二分】
【分析】
“虽然不是求什么最大的最小值(或者反过来)什么的……但还是可以用二分的,因为之前就做过一道小数型二分题(下面等会讲) 考虑二分面积,下界L=0,上界R=∑ni=1nπ∗ri2。对于一个中值x和一张半径r的饼来说,这张饼能够分出的最多分数显然是:⌊π∗r2x⌋,所以我们只需要求出∑ni=1⌊π∗ri2x⌋,判断其与f+1的关系即可
特别要注意的一点:π的大小!,因为r≤104r≤104,所以r2≤108r2≤108,又因为题目要求精确到三位小数,所以ππ就要精确到10-11,即π=3.14159265358
”
Pie
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.
---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.
3 3
4 3 3
1 24
5
10 5
1 4 2 3 4 5 6 5 4 2
3.1416
50.2655
#include<bits/stdc++.h>
using namespace std;
#define Lint long long int
#define pi acos(-1)
const double eps=1e-;
const int MAXN=;
double r[MAXN],s[MAXN];
double n,L,R;
int T,m;
bool check(double mid)
{
int ret=;
for(int i=;i<=n;i++)
ret+=(int)(s[i]/mid);
return ret>=m; //一旦出现Pie的数目大于等于到场人数的话就true
}
int main()
{
scanf("%d",&T);
while( T-- )
{
L=R=;
scanf("%lf%d",&n,&m),m++;
//m的原来数值只是朋友的个数,而主人公也是一员,所以加1,加上主人公
for(int i=;i<=n;i++)
{
scanf("%lf",&r[i]);
s[i]=pi*r[i]*r[i]; //这里是直接把所输入的半径变量变成面积,方便下面计算
R+=s[i]; // 上界 也可以写成R=max(R,r[i]);这里是吧右边界给设成pie里面的最大的那一个
}
while( R-L>eps )
{
double mid=(L+R)/;
if( check( mid ) )
//如果返回值为真,那么代表我们可以用此时mid的大小来替换左边界,看是否存在比mid还大但仍然满足所有人都能吃到一样大小的pie,因为题目上说的是尽可能大
L=mid;
else
//一旦发现不符合的话,此时mid的大小就得替换掉右边界,继续在比mid小的大小里面找符合题目条件的大小
R=mid;
}
//最后输出l,因为只有满足条件的时候L的值才变,所以对于L来说,它是永远符合题目条件的那个值
printf("%.4lf\n",L);
}
return ;
}
二分
HDU 1969 Pie【二分】的更多相关文章
- HDU 1969 Pie(二分查找)
Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...
- HDU 1969 Pie(二分,注意精度)
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- HDU 1969 Pie [二分]
1.题意:一项分圆饼的任务,一堆圆饼共有N个,半径不同,厚度一样,要分给F+1个人.要求每个人分的一样多,圆饼允许切但是不允许拼接,也就是每个人拿到的最多是一个完整饼,或者一个被切掉一部分的饼,要求你 ...
- (step4.1.2)hdu 1969(Pie——二分查找)
题目大意:n块馅饼分给m+1个人,每个人的馅饼必须是整块的,不能拼接,求最大的. 解题思路: 1)用总饼的体积除以总人数,得到每个人最大可以得到的V.但是每个人手中不能有两片或多片拼成的一块饼. 代码 ...
- hdu 1969 Pie(二分查找)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969 Pie Time Limit: 5000/1000 MS (Java/Others) Me ...
- 题解报告:hdu 1969 Pie(二分)
Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...
- hdu 1969 pie 卡精度的二分
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- HDU 1969 Pie(二分法)
My birthday is coming up and traditionally I’m serving pie. Not just one pie, no, I have a number N ...
- HDU 1969 精度二分
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
随机推荐
- 【linux】【磁盘分割】Linux磁盘分割
全部的磁盘阵列容量均给/cluster/raid目录,占有2TB的容量: 2 GB的swap容量: 分割出/, /usr, /var, /tmp等目录,避免程序错误造成系统的困扰: /home也独立出 ...
- (转)rvm安装与常用命令
rvm是一个命令行工具,可以提供一个便捷的多版本ruby环境的管理和切换. https://rvm.io/ 如果你打算学习ruby/rails, rvm是必不可少的工具之一. 这里所有的命令都是再用户 ...
- ProC第三弹
一.前言 我们上面已经了解Windows和Linux下的ProC开发环境,这里我们更进一步去简要介绍下ProC的预编译参数. 二.什么是预编译 预编译过程中,Pro*C/C++会自动生成C或者C++的 ...
- 【原创】关于高版本poi autoSizeColumn方法异常的情况
之前使用的3.9版本,autoSizeColumn方法一切正常,现在切换到了3.15版本这个方法就出先了问题,问题如下,无法自动追踪所有的列. Exception in thread "ma ...
- &与&&有什么区别?
一.简要说明 按位与:a&b是把a和b都转换成二进制数然后再进行与的运算: 逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true:只要有一个为零,a&a ...
- python基础学习笔记——正则表达式
1.什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...
- jcenter maven 库
先了解compile ‘com.squareup.okhttp:okhttp:2.4.0’的意义 首先我们要了解compile ‘com.squareup.okhttp:okhttp:2.4.0’这一 ...
- python学习-- 数据库迁移 python manage.py makemigrations 和 python manage.py migrate
python manage.py makemigrations 和 python manage.py migrate
- 我的PC必装软件
我的PC必装软件 TeXLive LaTeX套装 WinEdt LaTeX编辑器 PyCharm Python IDE Inkscape 矢量图制作,我根本不会用,但是常用来把SVG转成*.tex文件 ...
- python正则re模块
今日内容: 知识点一:正则 什么是正则: 就是用一系列具有特殊含义的字符组成一套规则,改规则用来描述具有某一特征的字符串 正则就是用来在一个大的字符串中取出符合规则的小字符串 为什么用正则: ...