请问为啥更新右边界答案就不对呢?
  • 板块P1577 切绳子
  • 楼主darea
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/5/16 22:25
  • 上次更新2023/10/23 15:33:30
查看原帖
请问为啥更新右边界答案就不对呢?
1008983
darea楼主2023/5/16 22:25
#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

double a[N];
int n, k;

int main()
{
    cin >> n >> k;
    double l = 0, r = 0;
    for (int i = 0; i < n; i ++){
        cin >> a[i];
        r = max(r, a[i]);
    }
    
    // for (int i = 0; i < 100; i ++){
    while (r - l >= 1e-5){
        int cnt = 0;
         double mid = (l + r) / 2;
         for (int i = 0; i < n; i ++)
            cnt += int(a[i] / mid);
        
        // 错误,为啥呢?
        // if (cnt <= k) r = mid; 
        // else l = mid; 
        if (cnt >= k) l = mid; 
        else r = mid; 
     }

    printf("%.2lf", int(r * 100) / 100.0);

    return 0;
}
2023/5/16 22:25
加载中...