Live Archieve 2678 Subsequence
题意:给你一个长度为n的序列和一个数m,每个数都是正数,求出一对i,j使得sum[i...j]>=m并且j-i+1最小,并输出这个最小值
首先我们想到的是枚举i,j然后依次判断,但是显然时间复杂度为O(n^2)
有经验的话会知道只需枚举终点或者起点中的一个就可以了,我们选择枚举终点
设前缀和为sum,那么对于终点j我们需要找到一个尽量大的i使得sum[j]-sum[i-1]>=m
那么我们就在枚举每一个j的时候维护这个i的最大值就可以了,当sum[j]-sum[i]>=m时i++
#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=1e5+5,inf=0x3f3f3f3f;
inline void _read(int &x){char t=getchar();bool sign=true;while(t<'0'||t>'9'){if(t=='-')sign=false;t=getchar();}for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0';if(!sign)x=-x;
}
int n,s[maxn],m,sum[maxn],ans;
int main(){int i,j;while(scanf("%d%d",&n,&m)!=EOF){ans=inf;for(i=1;i<=n;i++){_read(s[i]);sum[i]=sum[i-1]+s[i];}i=1;for(j=1;j<=n;j++){if(sum[i-1]>sum[j]-m)continue;while(sum[i]<=sum[j]-m)i++;ans=min(ans,j-i+1);}printf("%d\n",ans==inf?0:ans); }
}
Live Archieve 2678 Subsequence相关推荐
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...
- UVALive2678:Subsequence
UVALive2678:Subsequence 题目大意 给定一个数组A和一个整数S.求数组A中,连续且之和不小于S的连续子序列长度最小值. 要求复杂度:Ο(n) Solution 用变量L表示所选区 ...
- 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 ...
最新文章
- linux 内核头文件 linux kernel header
- linux大小写敏感和windows大小写不敏感(忽略大小写)导致的直接拷贝文件文件名冲突问题(需要打tar包再分享)
- b区计算机调剂学校,2021年b区研究生调剂院校有哪些
- 动态 SQL、EXECUTE IMMEDIATE、using、into、returning
- 配置 Powerline 到 Vim
- 如何基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践
- HDU 5985 Lucky Coins 数学
- 她拒绝麦肯锡 Offer,建立图片训练数据库,斯坦福 AI 实验室负责人 | 人物志
- 列表框、下拉列表框或组合框与数据库
- qq发文件大小上限_微信又出新功能!网友:终于不用转QQ了
- 华为华三开启snmp服务
- Python进阶(十四) logging标准库
- [转]Using Named Pipes (FIFOs) with Bash
- 使用Liquid实现简单的数据交换
- 简单使用Java实现微信公众号推送模板消息
- 服务器系统怎么安装网卡驱动,网卡驱动怎么安装,教您网卡驱动的安装操作
- python获取电脑屏幕分辨率
- configure: error: Package requirements (libwebp) were not met:
- Android Studio 中的maven仓库使用
- 计算机数字媒体计数专业好就业吗,2019数字媒体技术专业就业形势和就业方向分析...