尺取法(Two Points)
尺取法(Two Points)——两个log还是一个log?
很多二分答案的题目会要求每次查询数组中【瞎定义一个函数】小于给定常数的数目。
大多数时候我们都可以用固定左端点二分右端点的方式,单次复杂度为\(O(nlogn)\),但是往往有更佳的方法——尺取法
以每次查询区间和小于给定常数的的区间个数为例,我们初始设\(l=1,r=1\),每次看成“固定左端点”,不断尽可能右移右端点,直到区间不满足要求,加上的方案数就是\(r-l+1\)
当然,这其实就是“固左算右”的翻版,只不过我们发现右端点具有单调性质,因此能用来优化它。
还有一种Two Points,需从左右分别向中间靠拢,不断调整来增加答案,总体上单次查询复杂度都是\(O(n)\)的。
例如这道题:http://www.cnblogs.com/Krew/p/5910405.html
尺取法的重点是寻找枚举方案过程中的单调性

浙公网安备 33010602011771号