LA 3635 Pie (二分)
2015-06-23 15:55
363 查看
题目大意:F+1个人分N个派,要求每个人所得的派的面积相同且每个人只能获得一份派(即不能是多个派合成一起),求每人得到的派的面积的最大值。
二分答案x,用每个派的面积去除x,得到该派能够分给的人数。累加起来判断是否能否分给至少F+1个人。
二分答案x,用每个派的面积去除x,得到该派能够分给的人数。累加起来判断是否能否分给至少F+1个人。
#include<bits/stdc++.h> using namespace std; typedef double db; #define pi acos(-1.0) db A[10005]; int f,n; bool check(db x){ int s=0; for(int i=1;i<=n;++i) s+=floor(A[i]/x); return s>=f+1; } int main() { int t,i; cin>>t; while(t--) { scanf("%d%d",&n,&f); db L=0,R=-1,r; for(i=1;i<=n;++i){ scanf("%lf",&r); A[i]=r*r*pi; R=max(R,A[i]); } while(R-L>1e-5){ db m=(L+R)/2; if(check(m)) L=m; else R=m; } printf("%.4lf\n",R); } return 0; }
相关文章推荐
- h265核心技术
- Windows 10.1控制面板即将消失
- 使用root账户登录ubuntu 15.04
- Hadoop FS Shell
- xcode6制作动态库及合并不同架构动态库
- 多窗口
- 创建回调函数
- gsoap生成服务端客户端代码文件说明
- 阅读13到17章提出问题
- js禁止网页使用右键
- Mysql 函数大全
- 安装R语言包
- Linux登录ssh携带密码
- Android Studio如何发布APK
- 在 WampServer 上手工安装 PHP 的多个版本
- 重载(overload)重写(override)
- 字节序说明
- 安装R语言在Linux环境
- Android事件分发笔记
- distributed scan server