poj3061专题

《挑战程序设计竞赛》3.2.1 常用技巧-尺取法 POJ3061 3320 2566 2739 2100(1)

POJ3061 http://poj.org/problem?id=3061 题意 给定长度为n的整数数列以及整数S,求出总和不小于S的连续子序列的长度的最小值,如果解 不存在,输出0. 思路 如果用二分法: 先求出sum[i],从第1个数到第i个数的区间和,每次固定一个开始查找的起点sum[i], 然后采用二分查找找到 sum[i] + S 的位置,区间长度即为(末位置-(起始位置-

POJ3061 C语言代码

原题链接 题目不再描述了。 方法: 尺取法(追逐法) a 为 正数 数组 设子序列 左端点为 i 右端点为 j sum 为 子序列 的 和。 { 如果 sum 大于等于 s, i 右移 sum 更新(sum 变小); 如果 sum 小于 s, j 右移 sum 更新(sum 变大); } 不断循环此过程 即可。 具体 C语言代码 如下(用 C++ 提交 ) #include<stdio.h>