POJ-3061
算法:
1. 定义两个整数N和S,输入序列长度到N,输入最小子序列和下界到S。
2. 定义一个数组arr[100002],从arr[1]开始依次输入N个序列元素到arr。
3. 定义一个整数ans,初始化ans=100002。
4. 执行下列尺取法步骤:
1. 定义两个整数l和r,初始化l=1,r=2。
2. 定义一个整数sum,初始化sum=arr[1]。
3. 当不满足条件:r==N+1并且sum<S时,执行下列步骤,否则结束:
1. 若sum<S,则令r=r+1,sum=sum+arr[r-1]。回到1.3。
2. 若sum>=S,则令l=l+1,sum=sum-arr[l-1]。回到1.3。
4. 若ans==100002,说明没有符合条件的最小子序列,置ans=0,否则ans就是最小子序列长度。
5. 输出ans。
代码:
#include <iostream> using namespace std; int arr[]; int main()
{
int time;
cin >> time;
while (time--)
{
int N, S;
cin >> N >> S;
for (int i = ; i <= N; ++i)
{
cin >> arr[i];
}
int ans = ;
{ // Algorithm: Ruler Method
int l = , r = ;
int sum = arr[];
while (!(r == N + && sum < S))
{
if (sum < S)
{
++r;
sum += arr[r - ];
}
else
{
ans = ans>r - l ? r - l : ans;
++l;
sum -= arr[l - ];
}
}
if (ans == )
{
cout << << endl;
}
else
{
cout << ans << endl;
}
}
}
return ;
}
POJ-3061的更多相关文章
- POJ 3061 (二分+前缀和or尺取法)
题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...
- poj 3061 Subsequence
题目连接 http://poj.org/problem?id=3061 Subsequence Description A sequence of N positive integers (10 &l ...
- POJ 3061 Subsequence(Two Pointers)
[题目链接] http://poj.org/problem?id=3061 [题目大意] 给出S和一个长度为n的数列,问最短大于等于S的子区间的长度. [题解] 利用双指针获取每一个恰好大于等于S的子 ...
- POJ - 3061 Subsequence(连续子序列和>=s的最短子序列长度)
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- POJ 3061 Subsequence 二分或者尺取法
http://poj.org/problem?id=3061 题目大意: 给定长度为n的整列整数a[0],a[1],--a[n-1],以及整数S,求出总和不小于S的连续子序列的长度的最小值. 思路: ...
- poj 3061 Subsequence 二分 前缀和 双指针
地址 http://poj.org/problem?id=3061 解法1 使用双指针 由于序列是连续正数 使用l r 表示选择的子序列的起始 每当和小于要求的时候 我们向右侧扩展 增大序列和 每当和 ...
- poj 3061(二分 or 尺取法)
传送门:Problem 3061 https://www.cnblogs.com/violet-acmer/p/9793209.html 马上就要去上课了,先献上二分AC代码,其余的有空再补 题意: ...
- poj 3061 题解(尺取法|二分
题意 $ T $ 组数据,每组数据给一个长度 $ N $ 的序列,要求一段连续的子序列的和大于 $ S $,问子序列最小长度为多少. 输入样例 2 10 15 5 1 3 5 10 7 4 9 2 8 ...
- POJ 3061 Subsequence(尺取法)
题目链接: 传送门 Subsequence Time Limit: 1000MS Memory Limit: 65536K 题目描述 给定长度为n的数列整数以及整数S.求出总和不小于S的连续子 ...
- Greedy:Subsequence(POJ 3061)
和最短序列 题目大意:找出一个序列中比至少和S相等的最短子序列(连续的) 本来这道题可以二分法来做复杂度O(NlogN),也可以用一个类似于游标卡尺的方法O(N)来做 先来讲游标卡尺法: 因为子序 ...
随机推荐
- jquery做一些小的特效
在文本框里输入内容到添加到下拉列表里,移除下拉里的内容 1 <!DOCTYPE html> <html> <head> <meta charset=" ...
- GridView中数据的汇总方法
首先,在页面添加事件<ASP:GridView OnRowDataBound="Gridview1_DataBound"> 其次,后台具体方法: public void ...
- Java接口和抽象类的区别
今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...
- win7+IIS7下木有4.0框架问题的解决方案
- SVN-让项目不包括Bin和Obj
方案一: 方案二: 方法三: 添加自定义文件夹或者文件的过滤 eg:.svn .git .vs obj bin *.o *.lo *.la *.al .libs *.so *.so.[0-9]* * ...
- 【解决】Word 在试图打开文件时遇到错误 请尝试下列方法:* xxx * xxx * xxx
有好几种情况,我先说我的这个情况 1.word设置不当导致 看图: 然后就能打开了~ 2.word格式问题,比如原来是doc,被人手动改成docx~~~ 解决方法:改回来 3.word版本不兼容,比如 ...
- [C#]想说一说嵌套数组
今天早上,随感而发,随便写了点东西.结果下午的时候看了看评论,吓我一跳.估计是不是写代码的人看散文看得太少了,还是因为现在的人读的书太少了,似乎有有些大惊小怪. 关于Y美女,我声明一下,尽管她很脱俗, ...
- Android获取短信验证码
Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发 ...
- Android应用中实现系统“分享”接口
在android下各种文件管理器中,我们选择一个文件,点击分享可以看到弹出一些app供我们选择,这个是android系统分享功能,我们做的app也可以出现在这个列表中. 第一步:在Manifest.x ...
- 如何用Pivot实现行列转换
在Oracle中,如果要实现行列转换,较为常见的是用DECODE和CASE语句.对于简单的行列转行,DECODE和CASE语句尚能应付.在逻辑比较复杂,分组聚合较多的场景中,DECODE和CASE语句 ...