POJ
来源:互联网 发布:怎么申请淘宝旗舰店 编辑:程序博客网 时间:2024/06/05 21:52
题意:给出n个朋友,m个苹果派,再给出m个苹果派的半径,求出可以分给n个朋友一摸一样的苹果派的最大面积(不可以拼凑,只可以是一整块)。
思路:贪心+二分
#include <iostream>#include <cstdio>#include <algorithm>#include <set>#include <string>#include <cstring>#include <cmath>using namespace std;#define pi acos(-1.0)#define exp 1e-5int s[10005];typedef long long ll;int n,f;int judge(double mid){ ll sum=0; for(int i=1;i<=n;i++) { sum+=(int)(1.0*s[i]*s[i]*pi/mid); } return sum>=(f+1)? 1:0;}int main(){ int t; scanf("%d",&t); while(t--) { double sum=0.0; scanf("%d%d",&n,&f); for(int i=1;i<=n;i++) { scanf("%d",&s[i]); sum+=1.0*s[i]*s[i]*pi; } double l=0.0,r=sum,mid; while(r-l>=exp){ mid=(l+r)/2.0; if(judge(mid)) l=mid; else r=mid; } printf("%.4lf\n",l); } return 0;}
阅读全文
0 0