链接 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1530
这个是典型的二分题,题目的意思就是给出朋友的个数还有饼的个数以及饼的半径,让你求出朋友以及自己最多可以分到多少的饼,并且分到的饼不可以是两块饼拼接的。要注意精度问题。
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 #include<math.h> 6 const double eps=1e-8; 7 const double pi=acos(-1); 8 using namespace std; 9 int N,F; 10 int V[10005]; 11 bool test(double x){ 12 int ans=0; 13 for(int i=0;i<N;i++){ 14 ans+=int(V[i]/x); 15 } 16 if(ans>=(F+1)) 17 return true; 18 else return false; 19 } 20 int main(){ 21 int t; 22 cin>>t; 23 while(t--){ 24 cin>>N>>F; 25 double max=0.0; 26 double low=0.0; 27 double mid; 28 for(int i=0;i<N;i++){ 29 cin>>V[i]; 30 V[i]*=V[i]; 31 if(V[i]>max) 32 max=V[i]; 33 } 34 while(low+1e-8<max){ 35 mid=(max+low)/2; 36 if(test(mid)==true)low=mid; 37 else max=mid; 38 } 39 mid*=acos(-1); 40 printf("%.4f\n",mid); 41 }return 0; 42 }
时间: 2024-10-12 14:01:53