UVALive2678:Subsequence


题目大意


给定一个数组A和一个整数S。求数组A中,连续且之和不小于S的连续子序列长度最小值。

要求复杂度:Ο(n)

Solution


用变量L表示所选区间最左端下标,用变量R表示所选区间最右端下标,用变量sum表示所选区间的和。从左到右扫描一遍数组,如果sum比S小,则右移R,扩大所选区间,从而增大sum。通过不断的右移L达到遍历整个数组的目的。

Note


  1. 当解不存在时需要输出0。不知道为什么题目中并没有明确的指出这一点,但如果不加以考虑一定会WA。
  2. 数组中单个元素不超过int类型的表示范围,但子序列之和有可能超过,因此需要使用long long类型

AC-Code(C++)


Time:33ms

#include <iostream>
#include <iomanip>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <climits>
#include <ctime>using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const int maxn = 100000 + 10;/** 刘汝佳 训练指南 P48*/int A[maxn];int main(int argc, const char * argv[]) {//    freopen("input.txt", "r", stdin);int N,S;while(scanf("%d %d",&N,&S)==2){for(int i=0;i<N;i++){scanf("%d",A+i);}ll sum = 0; // long long is needed here!!!int R = 0;int L = 0;int ans = INF;while (L<N) {while(sum<S && R<N){sum += A[R++];}if(sum<S)break;ans = min(ans,R-L);sum -= A[L++];}// if solution doesn't exist, print 0 instead.ans = ans == INF ? 0 : ans;printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/irran/p/UVALive2678.html

UVALive2678:Subsequence相关推荐

  1. 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...

    问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...

  2. swift Sequence 和 SubSequence

    1 序列 Sequence 序列协议是集合类型结构中的基础. 一个序列是代表有一系列具有相同类型的值,并且对这些值进行迭代. 协议中主要有两个参数,一个是元素Element,一个就是迭代器Iterat ...

  3. 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence

    动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...

  4. 贪心 ---- E. Maximum Subsequence Value[位运算]

    E. Maximum Subsequence Value 题目大意:有点难解释..建议自己看题.我这里就粗略解释:给定一个数组aaa,要求选出具有最大价值的子序列.假设此子序列的长度为kkk,那么最大 ...

  5. 尺取法 POJ 3601 Subsequence

    题目传送门 1 /* 2 题意:求连续子序列的和不小于s的长度的最小值 3 尺取法:对数组保存一组下标(起点,终点),使用两端点得到答案 4 1. 记录前i项的总和,求[i, p)长度的最小值,用二分 ...

  6. HPU第三次积分赛-D:Longest Increasing Subsequence(DP)

    Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1​,a2​,a3​,a4​...an​, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...

  7. LeetCode-334. Increasing Triplet Subsequence

    Description: Given an unsorted array return whether an increasing subsequence of length 3 exists or ...

  8. LintCode Longest Increasing Continuous Subsequence

    原题链接在这里:http://www.lintcode.com/en/problem/longest-increasing-continuous-subsequence/ 题目: Give an in ...

  9. 第一周 01-复杂度2 Maximum Subsequence Sum

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

最新文章

  1. log4j的日志级别(ssm中log4j的配置)
  2. 【机器学习入门到精通系列】多变量线性回归(附详细代码)
  3. 服务机器人---方案设计中需要评估确认的点
  4. 用Java API实现HDFS操作(三)问题汇总
  5. symbol MC 3090 upgrade to symbol MC 3190
  6. 9i DB_FILE_MULTIBLOCK_READ_COUNT参数和extent大小的设置
  7. POJ3246-Balanced Lineup,好经典的题,做法和HDU-I hate it 一样~~
  8. 鼠标显示效果的形状设置
  9. 上网账号口令怎么获取_怎么从路由器里获取上网帐号和密码
  10. VMware Ubuntu 18.04 搭建个人Hustoj教程
  11. React——插件集合
  12. 句柄Hwnd 与 窗口Wnd的联系
  13. 【IoT】物联网NB-IoT之电信物联网开放平台对接流程浅析
  14. Excel只删除开头和末尾空格,中间不管的2种操作
  15. Poi解析对比excel表格
  16. 图像分割之常用损失函数-Dice Loss
  17. Mapbox + ECharts 实现简单迁徙图
  18. MySQL 格式化日期(DATE_FORMAT)
  19. 矩阵论 - 9 - 线性无关、基、维数
  20. 搭建 centos7 YUM 源

热门文章

  1. oracle 分区使用情况,Oracle Hash分区的使用总结
  2. 《OpenCV3编程入门》学习笔记5 Core组件进阶(五)离散傅里叶变换(DFT)
  3. 查询oracle模式对象信息,ORACLE 模式和模式对象
  4. 字符串插入_计算机毕业设计中小程序插入html代码
  5. oracle添加语句 commit,Oracle COMMIT语句
  6. 带套属于安全行为吗_教师不管学生上课睡觉的行为,属于不负责任吗?建议收藏!...
  7. java aws访问授权 实例_java – 使用IAM身份验证和Spring JDBC访问AWS ...
  8. 卡片使用_APP必备的设计元素!卡片
  9. python程序员的工作内容_每个Python程序员都要知道的日志实践
  10. mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)