二分就是二分最后的答案,对当前的答案判断是否可以满足分成m条的条件,根据结果收缩二分的区间,当区间左右端点差值很小的时候,可以近似认为这就是最后的答案。 #include<bits/stdc++.h> using namespace std; typedef long long ll; int n, m; double a[1000010]; const double eps = 1e-4; bool ok(double x) {     int cnt = 0;     for(int i = 0; i < n; i++)     {         cnt += a[i] / x;     }     return cnt >= m; } int main() {     cin >> n >> m;     for(int i = 0; i < n; i++)     {         cin >> a[i];     }     double l = 0, r = 1e9 + 77;     while(l + eps < r)     {         double mid = (l + r) / 2;         if(ok(mid)) l = mid;         else r = mid;     }     printf("%.2f\n",l);     return 0; }
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务