下面这种写法会 WA :
int l=-1e12,r=0;
while(l<r){
mid=(l+r)/2;
if(check())l=mid,res=min(res,f[n]+mid*cnt[n]);
else r=mid-1;
}
cout<<res;
下面这种能 AC :
int l=-1e12,r=0;
while(l<r){
mid=(l+r)/2;
if(check())l=mid,res=min(res,f[n]+mid*cnt[n]);
else r=mid-1;
}
cout<<res;
但我为什么觉得第一种更对呢...