二分答案解题技巧
二分答案有一个很显著的特征:一定存在一个临界值,单调性只是临界值的一种,而不是全部。
临界值,就是寻找第一个/最后一个满足要求的值,这又分别对应着两个完全不同的二分模板,这里做题时推荐使用“第一个满足要求的值”,即对应着 STL 中的 upper_bound ,手写板对应着 这篇文章 里讲的模板。
标志词
一些标志性词语:
- 最大值:最后一个满足要求的数
- 最小值:第一个满足要求的数
- 最大化最小值:最后一个满足要求的数
- 最小化最大值:第一个满足要求的数
- 第一个... :第一个满足要求的数
- 最后一个 ...:最后一个满足要求的数
进阶技巧
一些进阶技巧:
- 对于在某区间内存在临界值或有单调性,但放在全局看就不满足的话,可以把全局分割成几个小区间,对每个小区间进行二分。如 [ CSP-J 2022 ] 解密 中把一个二次函数以顶点为分界,在左右端分别进行查找;[ NOIp 2001 提高组 ] 一元三次方程 因为根与根之间的差大于等于
,所以可以每隔 为一个分界点,对于每个区间 分别进行二分即可。
常见套路
一些常见套路:
标签:
基础算法
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战