当前位置: 首页 > news >正文

wqs二分的无脑写法

我曾经被 wqs 二分的边界折磨死了。后面听说有种很无脑的写法,听说是 lhx 大神发明的,记录一下。

假设我们要求的是恰好 \(k\) 个的最大值,大概是这样的:

int l = -1e6, r = 1e6;
while (l + 1 < r) {int mid = l + r >> 1;if (check(mid).se >= k) l = mid;else r = mid;
}
return min(check(l).fi + l * k, check(r).fi + r * k);

这个东西很巧妙的地方在于,你不再需要在 check() 里再关心同样结果下是多取还是少取。而且不用再关心 l 是取 mid 还是 mid + 1 的问题了。

好,问题来了,为什么这个是对的?而且这个求的是最大值啊,为什么取 min 是对的?

我们画个图。

假设答案在 Ans 点,我们二分到了 l 在 L,r 在 R,此时我们用 L 算出来的 Ans' 是飞出了答案的凸函数的,而用 R 算出来的是答案。我们发现算出来只可能更大,而且因为是整数所以一定有一个是答案。于是我们取个 min 就好啦。

http://www.zskr.cn/news/25722.html

相关文章:

  • 2022 ICPC Hangzhou G and 2022 ICPC Jinan
  • 10-20 Extra-Problem 总结
  • Rust 编译加速的最佳实践
  • 10月20日记
  • 笔记本 光驱 的内部结构及用法: 应急强大的系统启动 (恢复) 光盘 (DVD+R/RW)
  • WPF loading data asynchronously and contextmenu save as json in mvvm
  • 10.20总结
  • 学习相关
  • 题解:Luogu P2075 区间 LIS
  • 英语_阅读_2050 Space tourism_待读
  • 题解:Luogu P10644 [NordicOI 2022] 能源网格 Power Grid
  • 题解:Luogu P4143 采集矿石
  • Spring 常见注解
  • 题解:AtCoder ARC208C Mod of XOR
  • 32-腾讯IM接入资料和定价
  • 题解:AtCoder ARC207A Affinity for Artifacts
  • [笔记]高斯消元
  • 02.Python百行代码实现抽奖系统
  • [SSH] scp:基于 SSH 的安全文件传输
  • 题解:P11662 [JOI 2025 Final] 方格染色 / Grid Coloring
  • CSP-S 32 多校5
  • CSP-S 29
  • ES原理、zookeeper、kafka
  • LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
  • 【HOWTO】购买和销售二手测试仪器指南
  • 小马算力致敬程序员
  • 蛋白表达标签:重组蛋白研究的精妙引擎
  • 106.腾讯地图位置服务再出错
  • Luogu P10034 「Cfz Round 3」Circle 题解 [ 蓝 ] [ 背包 DP ] [ 质数筛 ] [ 图论 ] [ 构造 ]
  • 20232410 2025-2026-1 《网络与系统攻防技术》实验二实验报告