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)来做 先来讲游标卡尺法: 因为子序 ...
随机推荐
- 我只是想开个饭店—— JavaIO模型的演变
Java的IO...真的是我所见过的高级语言中.最最复杂的... 看着这个图我也是醉了. 但是不知不觉间,java的IO已经更新到了NIO.2了,IO库早已经不止是这个样子了,那么这个过程中,它们经历 ...
- Docker:镜像操作和容器操作
镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...
- C#+OpenGL+FreeType显示3D文字(2) - 用GLSL+VBO绘制文字
C#+OpenGL+FreeType显示3D文字(2) - 用GLSL+VBO绘制文字 +BIT祝威+悄悄在此留下版了个权的信息说: 上一篇得到了字形贴图及其位置字典(可导出为XML).本篇就利用此贴 ...
- 在JS中获取文件点之后的后缀字符
var upFileName = $("#fileToUpload").val();var index1=upFileName.lastIndexOf(".") ...
- Windows内网渗透提权的几个实用命令
1.获取操作系统信息 查看所有环境变量:set 识别系统体系结构:echo %PROCESSOR_ARCHITECTURE% AMD64 识别操作系统名称及版本:systeminfo 查看某特定用户 ...
- Apk去掉签名以及重新签名的方法
Android开发中很重要的一部就是用自己的密钥给Apk文件签名,不经过签名的Apk文件一般是无法安装的,就算装了最后也是失败. 网上流传的"勾选允许安装未知来源的应用"其实跟签不 ...
- java继承、抽象和接口
package zdbExtends;public class Grandparent { public Grandparent(){ System.out ...
- html5多出来的字自动隐藏并显示...
- AVEVA Model Data Exchange Exports Structure Models
AVEVA Model Data Exchange Exports Structure Modelseryar@163.com Use Model Data Exchange Addin to exp ...
- Android 之 ProgressDialog用法介绍
布局文件测试: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi ...