UVALive2678:Subsequence
UVALive2678:Subsequence
题目大意
给定一个数组A和一个整数S。求数组A中,连续且之和不小于S的连续子序列长度最小值。
要求复杂度:Ο(n)
Solution
用变量L表示所选区间最左端下标,用变量R表示所选区间最右端下标,用变量sum表示所选区间的和。从左到右扫描一遍数组,如果sum比S小,则右移R,扩大所选区间,从而增大sum。通过不断的右移L达到遍历整个数组的目的。
Note
- 当解不存在时需要输出0。不知道为什么题目中并没有明确的指出这一点,但如果不加以考虑一定会WA。
- 数组中单个元素不超过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相关推荐
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...
- swift Sequence 和 SubSequence
1 序列 Sequence 序列协议是集合类型结构中的基础. 一个序列是代表有一系列具有相同类型的值,并且对这些值进行迭代. 协议中主要有两个参数,一个是元素Element,一个就是迭代器Iterat ...
- 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence
动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...
- 贪心 ---- E. Maximum Subsequence Value[位运算]
E. Maximum Subsequence Value 题目大意:有点难解释..建议自己看题.我这里就粗略解释:给定一个数组aaa,要求选出具有最大价值的子序列.假设此子序列的长度为kkk,那么最大 ...
- 尺取法 POJ 3601 Subsequence
题目传送门 1 /* 2 题意:求连续子序列的和不小于s的长度的最小值 3 尺取法:对数组保存一组下标(起点,终点),使用两端点得到答案 4 1. 记录前i项的总和,求[i, p)长度的最小值,用二分 ...
- HPU第三次积分赛-D:Longest Increasing Subsequence(DP)
Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1,a2,a3,a4...an, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...
- LeetCode-334. Increasing Triplet Subsequence
Description: Given an unsorted array return whether an increasing subsequence of length 3 exists or ...
- LintCode Longest Increasing Continuous Subsequence
原题链接在这里:http://www.lintcode.com/en/problem/longest-increasing-continuous-subsequence/ 题目: Give an in ...
- 第一周 01-复杂度2 Maximum Subsequence Sum
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to ...
最新文章
- log4j的日志级别(ssm中log4j的配置)
- 【机器学习入门到精通系列】多变量线性回归(附详细代码)
- 服务机器人---方案设计中需要评估确认的点
- 用Java API实现HDFS操作(三)问题汇总
- symbol MC 3090 upgrade to symbol MC 3190
- 9i DB_FILE_MULTIBLOCK_READ_COUNT参数和extent大小的设置
- POJ3246-Balanced Lineup,好经典的题,做法和HDU-I hate it 一样~~
- 鼠标显示效果的形状设置
- 上网账号口令怎么获取_怎么从路由器里获取上网帐号和密码
- VMware Ubuntu 18.04 搭建个人Hustoj教程
- React——插件集合
- 句柄Hwnd 与 窗口Wnd的联系
- 【IoT】物联网NB-IoT之电信物联网开放平台对接流程浅析
- Excel只删除开头和末尾空格,中间不管的2种操作
- Poi解析对比excel表格
- 图像分割之常用损失函数-Dice Loss
- Mapbox + ECharts 实现简单迁徙图
- MySQL 格式化日期(DATE_FORMAT)
- 矩阵论 - 9 - 线性无关、基、维数
- 搭建 centos7 YUM 源
热门文章
- oracle 分区使用情况,Oracle Hash分区的使用总结
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(五)离散傅里叶变换(DFT)
- 查询oracle模式对象信息,ORACLE 模式和模式对象
- 字符串插入_计算机毕业设计中小程序插入html代码
- oracle添加语句 commit,Oracle COMMIT语句
- 带套属于安全行为吗_教师不管学生上课睡觉的行为,属于不负责任吗?建议收藏!...
- java aws访问授权 实例_java – 使用IAM身份验证和Spring JDBC访问AWS ...
- 卡片使用_APP必备的设计元素!卡片
- python程序员的工作内容_每个Python程序员都要知道的日志实践
- mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)