链接 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1530
这个是典型的二分题,题目的意思就是给出朋友的个数还有饼的个数以及饼的半径,让你求出朋友以及自己最多可以分到多少的饼,并且分到的饼不可以是两块饼拼接的。要注意精度问题。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
const double eps=1e-;
const double pi=acos(-);
using namespace std;
int N,F;
int V[];
bool test(double x){
int ans=;
for(int i=;i<N;i++){
ans+=int(V[i]/x);
}
if(ans>=(F+))
return true;
else return false;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>N>>F;
double max=0.0;
double low=0.0;
double mid;
for(int i=;i<N;i++){
cin>>V[i];
V[i]*=V[i];
if(V[i]>max)
max=V[i];
}
while(low+1e-<max){
mid=(max+low)/;
if(test(mid)==true)low=mid;
else max=mid;
}
mid*=acos(-);
printf("%.4f\n",mid);
}return ;
}