Shirlies
宁静专注认真的程序媛~

这一题起初我连题目都没有看懂,汗,貌似最近自己对题目的理解有点障碍啊,得多多看书了,最好拿本英文书阅读,泪崩啊……郁闷中,理解题目了,但是没有头绪,不知道这一题哪里是二分题目了,茫然中搜了题解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;
}

posted on 2012-02-19 21:03  Shirlies  阅读(614)  评论(0编辑  收藏  举报