方法:二分。
题目意思:要过生日了,我请大家吃pie,然后人数一共是f+1(我自己)。每个人的pie不能是拼接的,而且每个人的面积是一样的,这样就用二分枚举。
范围是0~最大的那块pie。
然后用每一块去除枚举值,加到cnt上,当cnt>=f+1时候找大一点的面积, 否则找小一点的面积
pie的值要取得精确一点 , = =
另外在输出时候要是%f,如果用%lf会WA的。
上代码!
1 #include2 #include 3 #define pie 3.1415926535897932384626433 4 double Pies[10000+10]; 5 int n,f; 6 double find(double mmax){ 7 int cnt; 8 int i; 9 double left=0;10 double right=mmax;11 double mid;12 double res=0;13 while(right-left>0.00001){14 mid=(right+left)/2;15 cnt=0;16 for(i=0;i =f){20 left=mid;21 if(mid>res)22 res=mid;23 }24 else right=mid;25 }26 return mid;27 }28 29 30 int main(){31 int i,j;32 int Case;33 double mmax;34 double res;35 while(~scanf("%d",&Case)){36 while(Case--){37 scanf("%d%d",&n,&f);38 f++;39 mmax=-1;40 for(i=0;i mmax) mmax=Pies[i];44 }45 res=find(mmax);46 printf("%.4f\n",res);47 }48 }49 return 0;50 }51
posted on 2014-02-16 22:35 阅读( ...) 评论( ...)