poj 3122 hdu 1969 Pie
来源:互联网 发布:2016淘宝客程序 编辑:程序博客网 时间:2024/05/20 19:28
点击打开链接poj 3122
点击打开链接hdu' 1969
思路:二分
分析:
1 题目说的是有n块圆形的饼,饼的高度都是1但是半径不一定相同。现在有f+1个人(算上自己),想要平均分得一块面积相同的饼,必须是一块不能够是组合起来的,问这f+1个人能够分到的最大的面积是多少
2 很明显的二分ans,然后对n块饼进行判断,利用二分逼近的思想求出ans
3 注意这样一题的精度要求很高,pi = 3.1415926535898,还有eps不能取太小会TLE。
代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define MAXN 10010#define pi 3.1415926535898#define eps 1e-6int t , N , F;double sum;double r[MAXN];void solve(){ double left , right , mid; left = 0; right = 1.0*(pi*sum)/F; while(right-left > eps){ mid = left+(right-left)/2.0; int count = 0; for(int i = 0 ; i < N ; i++){ double s = pi*r[i]*r[i]; int tmp = s/mid; count += tmp; } if(count < F) right = mid; else left = mid; } printf("%0.4lf\n" , right);}int main(){ scanf("%d" , &t); while(t--){ scanf("%d%d" , &N , &F); sum = 0; F++; for(int i = 0 ; i < N ; i++){ scanf("%lf" , &r[i]); sum += r[i]*r[i]; } solve(); } return 0;}
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const double eps = 1e-6;const double PI = 3.1415926535898;const int MAXN = 10010;int n , numFriend;struct pie{ double r; double size;};pie p[MAXN];bool judge(double s){ int cnt = 0; for(int i = 0 ; i < n ; i++) cnt += p[i].size/s; return cnt >= numFriend+1 ? true : false;}double solve(double Min , double Max){ double left , right , mid; left = Min , right = Max; while(right-left > eps){ double mid = left+(right-left)/2; if(judge(mid)) left = mid; else right = mid; } return left;}int main(){ int Case , pos; double Min , Max; scanf("%d" , &Case); while(Case--){ scanf("%d%d" , &n , &numFriend); Max = 0.0 , Min = 1>>30; for(int i = 0 ; i < n ; i++){ scanf("%lf" , &p[i].r); p[i].size = PI*p[i].r*p[i].r; Max = max(Max , p[i].size); Min = min(Min , p[i].size); } printf("%.4lf\n" , solve(Min , Max)); } return 0;}
- poj 3122 hdu 1969 Pie
- HDU 1669 & poj 3122 pie
- POJ 3122/HDU 1969-Pie-二分法分馅饼
- hdoj 1969 (poj 3122&&acm)Pie
- POJ-3122 Pie
- POJ 3122 Pie 二分
- POJ 3122 Pie 二分
- poj 3122 pie
- POJ 3122 Pie
- poj 3122 la3635 pie
- POJ 3122 Pie
- POJ-3122-Pie
- POJ 3122 Pie
- POJ 3122 Pie
- poj 3122 Pie
- poj 3122 pie
- POJ 3122 Pie
- POJ-3122 Pie
- C/C++位域(Bit-fields)
- 力量本源-团队
- 数据结构——行编辑
- Linux内核 hlist_head/hlist_node结构解析
- blog中建模starUML与数据库设计PowerDesign12.5
- poj 3122 hdu 1969 Pie
- spring MVC拦截器
- Java Servlet API 部分中文API说明
- Java常用对象构造方法
- dom4j解析xml文档
- Java的package和import机制
- 每位IT人士都必须掌握的十大业务技能
- boost c++ lib on linux(4) - thread同步条件变量学习——生产者消费者队列
- Android应用开发学习笔记(2)应用开发初步体验