紧湿后人
查看原帖
紧湿后人
759710
LuoFeng_Nanami楼主2024/10/4 20:14

如果你 TLE 却找不到原因,请检查你的二分,如果你是这么写的:

while(_L < _R) {
    int mid = (_L + _R) >> 1;
    if(cpy[mid].val + tag[i] <= k) _L = mid;
    else _R = mid - 1;
}

那么请改成

* : 原来的
+ : 正确做法
while(_L < _R) {
*   int mid = (_L + _R) >> 1;
+   int mid = ((_L + _R) >> 1) + 1;  
    if(cpy[mid].val + tag[i] <= k) _L = mid;
    else _R = mid - 1;
}
2024/10/4 20:14
加载中...