二分的问题
查看原帖
二分的问题
778011
DreamLand_zcb楼主2022/12/31 10:42

为什么这道题二分的int mid要写在while循环外面,写里面二分就挂了:

int mid写外面的:

    ll l=1, r=1e18, mid;
    while(l < r)
    {
        mid=(l + r)/2;
        int tot = work(mid);
        if(tot > k) l = mid + 1;
        else    r = mid;
    }
    ans=l;
    l=1, r=1e18;
    while(l < r)
    {
        mid=(l + r)/2;
        int tot = work(mid);
        if(tot >= k)    l=mid+1;
        else    r=mid;
    }

int mid写里面的:

    ll l=1, r=1e18;
    while(l < r)
    {
        int mid=(l + r)/2;
        int tot = work(mid);
        if(tot > k) l = mid + 1;
        else    r = mid;
    }
    ans=l;
    l=1, r=1e18;
    while(l < r)
    {
        int mid=(l + r)/2;
        int tot = work(mid);
        if(tot >= k)    l=mid+1;
        else    r=mid;
    }

这个就挂了

2022/12/31 10:42
加载中...