您的位置:首页 > 其它

UVALive 3635 分派

2016-07-05 19:55 267 查看
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1636
http://7xjob4.com1.z0.glb.clouddn.com/7f2d26dff99d9cc95e81c18e10aea4f5
题意:每个人分到面积相同的整块派,求能分到的最大面积

思路:二分查找面积为x的派看是否能分足够的块数

#include <bits/stdc++.h>
using namespace std;

const double pi=acos(-1.0);

int r;
int n,f;
double s[10005];

int check(double c)
{
int i,j,sum=0;
for(i=1;i<=n;i++)
sum+=floor(s[i]/c);
if(sum>=f+1)
return 1;
else
return 0;
}

int main()
{
int T;
int i,j;
scanf("%d",&T);
while(T--)
{
double L=0,R=0;
scanf("%d %d",&n,&f);
for(i=1;i<=n;i++)
{
scanf("%d",&r);
s[i]=pi*r*r;
R=max(R,s[i]);
}

while(R-L>1e-5)
{
double M=(L+R)/2;
if(check(M)==1)
L=M;
else
R=M;
}
printf("%f\n",L);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: