93分求调QWQ
  • 板块P1577 切绳子
  • 楼主Mollin
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/27 19:06
  • 上次更新2024/11/27 19:08:04
查看原帖
93分求调QWQ
329376
Mollin楼主2024/11/27 19:06
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
const int INF = 10000 + 100;
int n, k;
double l[INF], maxn = 0, eps = 1e-6;

bool check(double mid) {
    int sum = 0;
    for (int i = 1; i <= n; i++) sum += (int) (l[i] / mid);
    if (sum >= k) return true;
    else return false;
}

int main(int argc, char * argv[]) {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) cin >> l[i], maxn = max(maxn, l[i]);
    double l = 0, r = maxn;
    while(r - l >= eps) {
        double mid = (r + l) / 2;
        if (check(mid)) l = mid;
        else r = mid;
    }
    cout << fixed << setprecision(2) << double(floor(l * 100) / 100) << endl;
    return 0;
}
2024/11/27 19:06
加载中...