社区讨论

求助!精度问题

P1577切绳子参与者 5已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mi868vl2
此快照首次捕获于
2025/11/21 09:18
4 个月前
此快照最后确认于
2025/11/21 09:18
4 个月前
查看原帖
每次都差0.01
调了一个下午了 QAQ
有哪位dalao有对付这种精度问题的方法吗(或者看一下代码85分)
CPP
#include<bits/stdc++.h>
using namespace std;
double l,r,mid;
double n,a[500001],m;
double ans;
int k;
double maxn; 
inline bool pd(double x)
{

    int sum=0;
    for(int i=1;i<=n;i++)
    {
        sum+=a[i]/x;
        if(sum>=k)
        return true;
    }
    return false;
}
int main()
{
    cin>>n>>k;
    for(register int i=1;i<=n;i++)
    {
    	double temp;
        scanf("%lf",&temp);
        a[i]=(int)(temp*10000);
        maxn+=a[i];
    }
    l=1;
    r=maxn;
    while(l<=r)
    {
        mid=(l+r)/2;
        
        if(pd(mid))
        {
        ans=mid;
        l=mid+0.01; 
        }
        else
        r=mid-0.01;
    }
    printf("%.2lf",ans/10000);
    return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...