HRBUST1530

链接 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

HRBUST1530的相关文章