关于二分的问题。。

P1462 通往奥格瑞玛的道路

哪篇题解使用了不包含mid的二分?
by 我是一个小号 @ 2023-09-06 18:45:13


@[我是一个小号](/user/365689) ```cpp while(l<=r){ c=work(mid); if(c){//如果可以的话 r=mid-1; mid=(l+r)>>1; } else{ l=mid+1; mid=(l+r)>>1; } } ``` 第二篇这个不是吗?
by cloudemakers @ 2023-09-07 12:50:34


@[cloudemakers](/user/550074) 看不见里面的mid吗???
by 我是一个小号 @ 2023-09-07 18:57:47


@[我是一个小号](/user/365689) mid这个值不是取不到吗 蓝书上说的
by cloudemakers @ 2023-09-08 12:47:17


@[cloudemakers](/user/550074) 不理解你的问题。这不是等效于 ```cpp while(l<=r){ mid=(l+r)>>1; c=work(mid); if(c){//如果可以的话 r=mid-1; } else{ l=mid+1; } } ```
by 我是一个小号 @ 2023-09-08 19:25:26


@[我是一个小号](/user/365689) 楼主的意思是mid为正确的答案,但是每次l=mid+1,r=mid-1所以都取不到mid的值,最后输出l不一定对
by qzmoot @ 2023-10-02 21:11:51


@[cloudemakers](/user/550074) 正确应该是: ```cpp while(l<r) { int mid=(l+r)>>1; if(check(mid)) r=mid; else l=mid+1; } ```
by qzmoot @ 2023-10-02 21:14:51


@[qzmoot](/user/774854) 感谢!然而被hack掉了(我再去查查
by cloudemakers @ 2023-10-03 12:49:17


@[cloudemakers](/user/550074) 这道题我也调试了半天,就是不对,很离谱。一堆题解都不是这样写的,让我很怀疑人生
by qzmoot @ 2023-10-03 14:25:59


|