hdu1969---Pie
阿新 • • 發佈:2018-08-15
gif class amp 區間 tips return space one sin
tips:
1.二分答案和二分查找還是有區別
2.條件判斷和區間LR的改變是有關系的
3.二分答案的精度和區間LR的偏移量有關
4.上一道題的條件轉換 最後一個滿足C--->第一個滿足!C
//還是二分答案,怎麽二分呢,答案是啥呢? //但是這個找位置是實數啊 //選擇控制精度嗎? //之前那個距離肯定是整數,所以L<R直接二分是整數的距離 //二分答案如果是精度控制的話,左右區間的改變直接賦值為mid //即 L=mid,R=mid o(╥﹏╥)o 為啥呢? //可能因為-1答案偏移量太大了 ORZ #include<cstdio> #include<cmath> #includeView Code<algorithm> using namespace std; const int M=10010; int t,n,f; int r[M]; double s[M]; const double eps=1e-4; const double pi=acos(-1.0); int main(){ while(scanf("%d",&t)!=EOF){ while(t--){ scanf("%d%d",&n,&f); for(int i=0;i<n;i++){ scanf("%d",&r[i]); s[i]=pi*r[i]*r[i]; } sort(s,s+n); double L=0;double R=s[n-1]; while(R-L > eps){ int ans=0; double mid=L+(R-L)/2; for(int i=0;i<n;i++){ ans+=(int)(s[i]/mid); }if(ans >= f+1) L=mid; else R=mid; } double ans2=L; printf("%.4lf\n",ans2); } } return 0; }
hdu1969---Pie