介绍
在区间上使用二分的前提是,当某个位置不满足条件时,那么所有比它小的位置(或者比它大的位置)都不满足条件。或者反过来说,当某个位置满足条件时,那么比它小的位置(或者比它大的位置)也都满足条件。
当问题是要求满足条件的最大值或者最小值时,可以考虑是否可以使用二分。
代码模板
|
|
库函数
区间非降序排列。
C++
#include <algorithm>
- binary_search 区间是否存在某个数
- lower_bound 第一个 大于等于 某个数的位置
- upper_bound 第一个 大于 某个数的位置
- equal_range 返回
pair
表示lower_bound
和upper_bound
分别搜索的结果
Python
from bisect import bisect_left, bisect_right
- bisect_left 同
lower_bound
- bisect_right 同
upper_bound