A了,但有个小问题,会关注的
查看原帖
A了,但有个小问题,会关注的
1284427
wudidepangzi楼主2024/3/28 17:32
/*check函数里,如果写成">"再去打印r的话会错一半,但">="再打印l就A了,求解答.会关注的(虽然不知道有没有吸引力)*/
#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
double L[N];
int n,k,cnt;

bool check(double x)
{
    cnt = 0;
    for(int i=1;i<=n;i++){
        cnt += (L[i]/x);
        if(cnt >= k) return true;//开小了
    }
    return false;//开大了
}

int main()
{
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;i++)
        scanf("%lf",&L[i]);
        
    double l = 0,r = 100000.001;
    while(l + 0.00001 < r)
    {
        double mid = (l+r)/2;
        if(check(mid)) l = mid;
        else r = mid;
    }
    if(!check(l))
        printf("%.2lf",l-0.005);
    else
        printf("%.2lf",r-0.005);
    return 0;
}
2024/3/28 17:32
加载中...