尺取法:
给长度为n的数组和一个整数m,求总和不小于m的连续子序列的最小长度;
这里就适合用尺取法;
用两个指针,最初都指向这一组数中的第一个,如果这个区间的元素之和小于给定的数,就把右指针向右移,直到区间和大于等于给定的值为止。之后把左指针向右移,直到区间和等于给定的值为止,保存方案,继续操作。
尺取法实现思想跟基础dp类似,但是更加适用于大量枚举数据区间的应用上,主要解决的问题有区间个数和最短区间的部分问题上,可以与二分思想同时使用解决问题。
以下便是部分比较有代表性的尺取例题:
1.Poj3061 - Subsequence (尺取法枚举区间)
2.Poj3320 - Jessica’s Reading Problem(尺取法+set/map)
可以顺便复习一下set/map基本使用
3.Poj2566 - Bound Found(尺取临界变形)
4.Poj2739 - Sum of Consecutive Prime Numbers
尺取法不是固定的模板
而是维护区间左右边界,动态处理最优解的一种技巧思想