uva 12097(二分)
Posted 发牌员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva 12097(二分)相关的知识,希望对你有一定的参考价值。
就是二分
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; const double pi=acos(-1.0); const int maxn=10000+100; int t,n,f; double a[maxn]; const double esp=1e-5; bool is_ok(double ss) { int ans=0; for(int i=1;i<=n;i++) ans+=floor(a[i]/ss); if(ans<f+1) return 1; else return 0; } int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&n,&f); double r,maxi=0; for(int i=1;i<=n;i++) { scanf("%lf",&r); a[i]=pi*r*r; maxi=max(maxi,a[i]); } double l=0; r=maxi; while(r-l>esp) { double mid=(l+r)/2.0; if(is_ok(mid)) r=mid; else l=mid; } printf("%.4lf\n",l); } return 0; }
以上是关于uva 12097(二分)的主要内容,如果未能解决你的问题,请参考以下文章
UVa 1616 Caravan Robbers (二分+贪心)
Gym 101464C - 计算几何+二分(uva1463)
UVA 1475 - Jungle Outpost(二分 + 半平面交)