如果你统计答案按照最后一次check的答案计算,需要注意最后一次检查对应的mid可能不是所需要的斜率,检查出来的答案并不是所需斜率范围内对应的答案,如果这次检查完二分也结束了,那答案就错了。
while (l <= r) {
ll mid = l + r >> 1;
ll t=chek(mid,dp,num);
if (t > m)l = mid + 1;
else if (t < m)r = mid - 1;
else {
r = mid;
break;
}
}
chek(r,dp,num);
这是我的ac代码,以二分结束后的r为正确斜率。如果最后一行不加会错两个点