这一题起初我连题目都没有看懂,汗,貌似最近自己对题目的理解有点障碍啊,得多多看书了,最好拿本英文书阅读,泪崩啊……郁闷中,理解题目了,但是没有头绪,不知道这一题哪里是二分题目了,茫然中搜了题解http://www.cnblogs.com/newpanderking/archive/2011/08/24/2152576.html
自卑啊,也明白了并不是学到了什么就一定会用!要灵活变化啊~~~
#include "stdio.h"
#include "math.h"
#define pi acos(-1.0)//!!
#define er 1e-6
double area[10005];
int main()
{
int T;
int pie,per;
int r,ins,i;
double sum,start,end,mid;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&pie,&per);
sum=0;
for(i=0;i<pie;i++)
{
scanf("%d",&r);
area[i]=pi*r*r;
sum+=area[i];
}
sum=sum/(per+1);
start=0;
end=sum;
while(fabs(start-end)>er)
{
mid=(start+end)/2;
ins=0;
for(i=0;i<pie;i++)
{
if(area[i]/mid)
ins=ins+(int)(area[i]/mid);
}
if(ins>per)
start=mid;
else
end=mid;
}
printf("%.4lf\n",start);
}
return 0;
}