UVa12097 LA3635 Pie

对面积在[0,maxa]内进行二分,其中maxa=max(maxa, A[i]),表示所有圆面积的最大值

对于面积x,计算一共可以切成多少份面积为x的派,看这个数目够不够F+1;

如果cnt >= F+1,L = M; 否则 R = M;

    while ( R-L > eps ) {
      M = L + (R-L)/2;                                                                                  
      if ( ok(M) ) L = M;
      else R = M;
    }
    printf ( "%.4lf\n", L );

其中ok函数:

bool ok(double x) {
  int cnt = 0;
  for ( int i = 0; i < N; ++i ) cnt += floor(A[i]/x);
  return cnt >= F+1;
}

 

posted on 2013-06-26 18:07  Ac_coral  阅读(199)  评论(0编辑  收藏  举报

导航