寒假训练报告2.9(常用技巧)
2018-02-09 19:17
330 查看
一、尺取法 O(n)
问题类型:求取满足条件的最小区间的方法
算法描述:尺取法通常是指对数组保存一对下标(起点、终点),然后根据实际情况交替推进两个端点,直到得出答案。
e.g:POJ 3061
给定长度为n的数列和整数S,求出总和不小于s的连续子序列的长度的最小值
1)可预处理前缀和,再用二分来做O(nlog n)
2)尺取法,分别用 s 和 t 来指向选取的起点和终点
e.g: POJ 3320
总结:尺取法使用条件:假设从 s 到 t 满足条件,那么从s+1开始,必须满足t’>= t
问题类型:求取满足条件的最小区间的方法
算法描述:尺取法通常是指对数组保存一对下标(起点、终点),然后根据实际情况交替推进两个端点,直到得出答案。
e.g:POJ 3061
给定长度为n的数列和整数S,求出总和不小于s的连续子序列的长度的最小值
1)可预处理前缀和,再用二分来做O(nlog n)
2)尺取法,分别用 s 和 t 来指向选取的起点和终点
int s = 0, t = 0, sum = 0, ans = INF; while(1){ while(t < n && sum < S){ sum += a[t]; t++; } if(sum < S) break; ans = min(ans, t - s); sum -= a[s]; s++; } if(ans == INF) cout << 0 << endl; else cout << ans << endl;
e.g: POJ 3320
总结:尺取法使用条件:假设从 s 到 t 满足条件,那么从s+1开始,必须满足t’>= t
相关文章推荐
- 复试训练——常用技巧——补充技巧
- 复试训练——常用技巧——调试技巧
- 寒假训练报告1.30(LIS和LCS转换)
- 寒假训练报告1.15(搜索进阶)
- 寒假训练—2.9
- 复试训练——常用技巧——滚动数组
- 常州大学新生寒假训练会试 D-训练技巧【动态规划】
- 寒假训练报告1.18(贪心)
- 寒假训练报告1.24(计数DP)
- 复试训练——常用技巧——标准模版库
- 寒假训练报告2.2(数论基础)
- 常州大学新生寒假训练会试-D-训练技巧(DP+单调队列)
- 寒假训练报告1.31(最小生成树)
- 寒假训练报告1.19(基础动态规划)
- 寒假训练1解题报告
- 寒假训练报告1.26(并查集)
- 【常州大学新生寒假训练会试】D 训练技巧 【单调栈+DP】
- 寒假训练5解题报告
- 常州大学新生寒假训练会试 D 训练技巧【dp + 单调队列优化】
- 寒假训练3解题报告 CodeForces #148