HOJ 2615 Pie ---------------二分查找的运用
2013-01-23 19:29
363 查看
HOJ 2615 Pie
//题意:有f+1个人分n块披萨,每个人要求分得的面积一样, // 且披萨只能被切开而不能重新组合,求每个人能分到的最大面积v。 //思路:对于每个确定的v,可以计算出最多能满足的人数p。 // 因此得到一个单调递减的函数关系,并且v的范围也可以确定为0~max(size(i)),i=1...n。(图中) // 一般要求什么酒对什么进行二分,对某一个面积进行判断,如果满足条件,那么找比这个面积大的满足条件的 //调试:编译的时候出现 undefined reference to `WinMain@16' // 由于把main写成 mian啦 // 这个题貌似很恶心 Pi 还是用反三角函数比较好 // 人数是输入的F+1个儿不是F个他本人也要分 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #define Pi acos(-1) #define maxlen 10010 using namespace std; long long high,mid,low,ans,s[maxlen]; int T,N,i,F; double r; bool judge(long long mid) { int i; bool flag; long long p = 0; for (i = 0; i < N; i++) p += s[i] / mid; if(p>=F+1)flag=true;//注意这里是f+1 else flag=false; return flag; }//判断分成这个面积可不可以 int main() { cin >> T; while(T--) { low=0,high=0,ans=0; cin >> N >> F; memset(s,0,sizeof(s)); for(i=0; i<N; i++) { cin >> r; s[i]=r*Pi*r*1000000;//先乘以一个大的树,再除回来,怕精度问题 high+=s[i]; } while(low<=high) { mid=(low+high)/2; if (judge(mid)) { low = mid + 1; ans = mid; } else high = mid - 1; } printf("%.4lf\n", (double)ans/1000000); } return 0; }
相关文章推荐
- 【hoj】2651 pie 二分查找
- 【hoj】2651 pie 二分查找
- 码农小汪剑指Offer之35-数字在排序数组中出现的次数 暴力 二分查找的运用
- poj 3122 Pie (二分查找)
- HDU 1969 Pie(二分查找)
- poj - 3122 Pie (二分查找)
- hdu 1969Pie(uvaoj 3635) 二分查找
- hdu 1969 Pie(二分查找)
- POJ 3122 Pie (二分查找)
- HDU1969 PIE 二分查找
- 二分查找 hdu1969 pie
- POJ 3122 Pie 二分查找 +高精度
- 黑马程序员——冒泡排序、选择排序、二分查找的实例运用分析
- 字符串查找(二分和快排的运用)
- hdu 1969 Pie(二分查找)
- UVALive 3635 Pie 二分查找
- Pie(POJ--3122【二分查找】
- HDOJ 1969 Pie(二分查找)
- 二分查找的巧妙运用(C++)
- 算法导论Java实现-二分查找运用(习题2.3-7)