2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 210000; const double eps = 1e-6; int n, m; double a[N]; bool check(double x) { int sum = 0; for (int i = 1; i <= n; i++) { sum += int(a[i] / x); } return sum >= m + 1; } int main() { scanf("%d%d", &n, &m); double l = 0, r = 0, ans; for (int i = 1; i <= n; i++) { scanf("%lf", &a[i]); a[i] = a[i] * a[i] * 3.141592653589; r = max(r, a[i]); } while (l <= r) { double mid = (l + r) / 2; if (check(mid)) { l = mid + eps; ans = mid; } else { r = mid - eps; } } printf("%.3lf\n", ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=210000; const double eps=1e-6; int n,m;double a[N]; bool check(double x) { int sum=0;for(int i=1;i<=n;i++)sum+=int(a[i]/x); if(sum>=m+1)return 1;else return 0; } int main() { scanf("%d%d",&n,&m); double l=0,r=0,ans; for(int i=1;i<=n;i++) { scanf("%lf",&a[i]); a[i]=a[i]*a[i]*3.141592653589; r=max(r,a[i]); } while(l<=r) { double mid=(l+r)/2; if(check(mid)) l=mid+eps,ans=mid; else r=mid-eps; } printf("%.3lf\n",ans); return 0; }
- 1
信息
- ID
- 281
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 244
- 已通过
- 70
- 上传者