【poj 3122】Pie 题意&题解&代码(C++)
2016-04-01 10:00
423 查看
题目链接:
http://poj.org/problem?id=3122
题意:
给出n个pie的直径,有f+1个人,如果给每人分的大小相同(形状可以不同),每个人可以分多少。要求是分出来的每一份必须出自同一个pie,也就是说当pie大小为3,2,1,只能分出两个大小为2的份,剩下两个要扔掉。
题解:
恶心的小数二分。。。
代码:
http://poj.org/problem?id=3122
题意:
给出n个pie的直径,有f+1个人,如果给每人分的大小相同(形状可以不同),每个人可以分多少。要求是分出来的每一份必须出自同一个pie,也就是说当pie大小为3,2,1,只能分出两个大小为2的份,剩下两个要扔掉。
题解:
恶心的小数二分。。。
代码:
#include<iostream> #include<algorithm> #include<stdio.h> using namespace std; const double pi=3.14159265359; const double esp=1e-6; int T,n,m; double a[10005],l,r,mid; int main() { scanf("%d",&T); while (T--) { scanf("%d%d",&n,&m); m++; r=-1.0; for (int i=1;i<=n;i++) { scanf("%lf",&a[i]); a[i]=a[i]*a[i]; r=max(r,a[i]); } l=0.0;mid=0.0; while(r-l>esp) { mid=(l+r)/2; int cnt=0; for (int i=1;i<=n;i++) cnt+=(int)(a[i]/mid); if (cnt>=m) l=mid; else r=mid; } printf("%.4f\n",mid*pi); //注意是%.4f不是%.4lf } }
相关文章推荐
- 【学习笔记】C++中 const常用的几种形式和目的
- 2015年蓝桥杯省赛B组C/C++:加法变乘法
- C++面向对象高级编程(下)第二周-Geekband
- 2015年蓝桥杯C/C++组:串逐位和
- C++函数编译原理和成员函数的实现
- C++书籍推荐
- C++对象的内存模型
- C++(union), C#(伪union)实现 Java的Float.intBitsToFloat()方法
- 【poj 3258】River Hopscotch 题意&题解&代码(C++)
- OC语言--NSFileManager& NSFileHandle
- C语言(概念术语装逼犯)
- 链表的实现(C++)
- 【poj 3273】Monthly Expense 题意&题解&代码(C++)
- CSP考试 2014年12月第1题 门禁系统 C语言实现
- C++ 调试帮助
- C语言学习003:Hello 指针
- CSP考试 2014年03月第1题 相反数 C语言实现
- CSP考试 2013年12月第1题 出现次数最多的数 C语言实现
- 环形缓冲区的C语言实现
- C++引用与指针的区别