uva - 12097 - Pie(二分法)
2014-02-25 17:39
225 查看
题意:有F+1个人来分N个圆形派,每个人得到的必须是一块整派,而不是几块拼在一起的。要求得到的派面积要相同。求每个人最多得到多大面积的派。
方法:采用二分法,转化为“是否可以让每个人得到一块面积为x的派”,取符合要求的最大x。(刘汝佳算训P30)
细节:注意循环条件,注意PI的表示方法。
方法:采用二分法,转化为“是否可以让每个人得到一块面积为x的派”,取符合要求的最大x。(刘汝佳算训P30)
#include <iostream> #include <iomanip> #include <string> #include <cstring> #include <cstdio> #include <queue> #include <stack> #include <algorithm> #include <cmath> #include <ctime> using namespace std; const double PI = acos(-1.0); const int maxn = 10000+10; int n, f; double A[maxn]; int judge(double area) { int sum = 0, i = 0; for (i = 0; i < n; i++) sum += floor(A[i] / area); return sum >= f+1; } int main() { #ifdef Local freopen("a.in", "r", stdin); #endif int t = 0, kase = 0; cin >> t; for (kase = 1; kase <= t; kase++) { int i = 0, j = 0; double _max = 0; cin >> n >> f; for (i = 0; i < n; i++) { int r = 0; cin >> r; A[i] = PI * r * r; _max = max(_max, A[i]); } double L = 0, R = _max; while(fabs(R-L) > 1e-5) { double M = (L+R)/2; if (judge(M)) L = M; else R = M; } cout << fixed << setprecision(4) << L << endl; } }
细节:注意循环条件,注意PI的表示方法。
相关文章推荐
- 面向对象——(7)抽象类
- 连接池--sp_reset_connection
- 如何把一个软件系统搞成saas
- 主线程
- ActivityNotFoundException
- javaSE-面向对象-静态代码块
- Struts2 url中包含感叹号实现动态方法调用
- 计算机操作系统(二)之进程管理
- 枚举的各种形式的使用例子
- JAVA array,map 转 json 字符串
- Android的sample程序在哪里
- Unable to resolve target 'android-15'解决方法
- zoj 3204 Connect them kruskal
- 软件工程(学科)简介
- ActivityNotFoundException
- 毅
- real210移植记录-支持eMMC,增加菜单操作
- 一整套偏方,亲们有对应症状可略为参考
- office2007word文档设置多级目录
- 独立思考者的思考模型----智商160以上的人都应该学会的