您的位置:首页 > 其它

HDU 1969 Pie

2010-07-25 17:00 302 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1969

题目大意:主人家里来了F个他的朋友,他家里有好几个Pie,主人希望把Pie分出F+1份,体积一样的(主人自己也要一个),所有的Pie不需要都分完,问你每个人最大能分到多大体积的Pie。

解题思路:贪心+二分查找

#include <stdio.h>
#include <math.h>
#define size 10001
#define eps 1e-7
#define PI acos(-1.0)

int N,K;
double len[size];

bool GetPiece(double x)
{
int i,count = 0;
for (i=0;i<N;i++)
{
count+=len[i]/x;
if(count>=K+1)
return 1;
}
return 0;
}

int main()
{
int test,i;
double sum;
double l,r,m;
/*freopen("d://2.txt","r",stdin);*/
scanf("%d",&test);
while (test--)
{
scanf("%d%d",&N,&K);
sum = 0;
for(i=0;i<N;i++)
{
scanf("%lf",&len[i]);
len[i] = len[i]*len[i]*PI;
sum+=len[i];
}
r = (double)sum/(K+1);/*蛋糕最大体积*/
l = 0;
while (r-l>=eps)
{
m = (double)(r+l)/2;
if(GetPiece(m))
l = m;
else
r = m;
}
printf("%.4lf/n",m);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: