标签:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4513 Accepted Submission(s):
1819
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 5 using namespace std; 6 7 #define PI acos(-1.0) 8 9 int main () 10 { 11 int t; 12 while (~scanf("%d",&t)) 13 { 14 while (t--) 15 { 16 int n,f,r; 17 double V[10005],v=0,vmax; 18 scanf("%d%d",&n,&f); 19 f=f+1; 20 for (int i=0; i<n; i++) 21 { 22 scanf("%d",&r); 23 V[i]=r*r*PI; 24 v+=V[i]; 25 //cout<<v<<endl; 26 } 27 vmax=v/f; 28 double left,right,mid; 29 left=0; 30 right=vmax; 31 int ans; 32 while ((right-left)>1e-6) 33 { 34 int flag=0,k=0; 35 ans=0; 36 mid=(left+right)/2; 37 for (int i=0;i<n;i++) 38 { 39 // ans+=(int)(V[i]/mid); 40 //if (ans>=f) 41 //flag=1; 42 double vv=V[i]; 43 while(vv>=mid) 44 { 45 vv-=mid; 46 k++; 47 //cout<<vv<<" "<<k<<endl; 48 if(k==f) 49 { 50 flag=1; 51 break; 52 } 53 } 54 if(flag==1) break; 55 } 56 if(flag==1) 57 left=mid; 58 else 59 right=mid; 60 } 61 printf("%.4lf\n",mid); 62 } 63 } 64 return 0; 65 }
另外一种
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 5 using namespace std; 6 7 #define PI acos(-1.0) 8 9 int main () 10 { 11 int t; 12 while (~scanf("%d",&t)) 13 { 14 while (t--) 15 { 16 int n,f,r; 17 double V[10005],v=0,vmax; 18 scanf("%d%d",&n,&f); 19 f=f+1; 20 for (int i=0; i<n; i++) 21 { 22 scanf("%d",&r); 23 V[i]=r*r*PI; 24 v+=V[i]; 25 //cout<<v<<endl; 26 } 27 vmax=v/f; 28 double left,right,mid; 29 left=0; 30 right=vmax; 31 int ans; 32 while ((right-left)>1e-6) 33 { 34 int flag=0,k=0; 35 ans=0; 36 mid=(left+right)/2; 37 for (int i=0;i<n;i++) 38 { 39 ans+=(int)(V[i]/mid); 40 if (ans>=f) 41 flag=1; 42 if(flag==1) break; 43 } 44 if(flag==1) 45 left=mid; 46 else 47 right=mid; 48 } 49 printf("%.4lf\n",mid); 50 } 51 } 52 return 0; 53 }
标签:
原文地址:http://www.cnblogs.com/qq-star/p/4259387.html