1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; int n,f,a[10001]; double pi = 3.14159265359; bool check(double x) { double sv = x * x * 1 ,v; // s: int i,c = 0; //能够分的人数 for(i = 1; i <= n ; i++) // 每一个披萨的半径 { v = a[i] * a[i] * 1; c = c + int(v / sv); } if(c >= f + 1) return true; else return false; } int main() { int m,i,j; cin>>m; double l,r,mxr,md; for(i = 1; i <=m ; i ++) { cin>>n>>f; mxr = INT_MIN; for(j = 1; j <= n ; j ++) { cin>>a[j]; mxr = max(mxr,a[j]*1.0); } l = 1,r = mxr,md; while(fabs(l - r) >= 10e-10) { md = (l + r) / 2; if(check(md)) { l = md; }else{ r = md; } } cout<<fixed<<setprecision(4)<<r*r*pi<<endl; } return 0; }
- 1
信息
- ID
- 1089
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者