POJ-3122 Pie (浮点数二分)
题目链接题意:有n个蛋糕和f+1个人(加上自己),把总共分层f+1块蛋糕,每块蛋糕都一样大。每个人自己分到的蛋糕都从一块蛋糕中得到。从0到蛋糕最大体积二分找到答案即可。注意:PI要取到小数点后11位,不然会WA。#include<iostream>#include<cstdio>#include<algorithm>using namespace s...
·
题目链接
题意:有n个蛋糕和f+1个人(加上自己),把总共分层f+1块蛋糕,每块蛋糕都一样大。每个人自己分到的蛋糕都从一块蛋糕中得到。从0到蛋糕最大体积二分找到答案即可。
注意:PI要取到小数点后11位,不然会WA。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const double PI=3.14159265359;
const int N=1e4+10;
double a[N];
int n,f;
int check(double x){
int sum=0;
for(int i=0;i<n;i++)
sum+=(int)(a[i]/x);
return sum;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&f);
f++;//要加上自己
double x,mx=0;
for(int i=0;i<n;i++){
scanf("%lf",&a[i]);
a[i]*=a[i]*PI;
mx=max(mx,a[i]);
}
double l=0.0,r=mx;
const double eps=1e-6;
while(r-l>eps){
double mid=(l+r)/2;
if(check(mid)<f)r=mid;
else l=mid;
}
printf("%.4f\n",l);
}
return 0;
}
更多推荐
已为社区贡献3条内容
所有评论(0)