1. 程式人生 > >hdu1969---Pie

hdu1969---Pie

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>
#include
<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; }
View Code

hdu1969---Pie