Poj 3061 Subsequence 队列区间求和
2013-09-05 21:27
169 查看
题意:按照顺序给定一组数,求出这组数中和大于等于m的最短子序列。
思路:1.strar=0开始求和sum知道sum>=m,更新最短序列的长度
2.把sum从开始start位置开始一直减知道sum<m,过程中更新最短序列的长度过程中start++
代码:
思路:1.strar=0开始求和sum知道sum>=m,更新最短序列的长度
2.把sum从开始start位置开始一直减知道sum<m,过程中更新最短序列的长度过程中start++
代码:
#include <iostream> #include <stdio.h> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <map> #include <queue> #define lson l,mid,num<<1 #define rson mid+1,r,num<<1|1 using namespace std; const int M=100005; int a[M]; int main() { int t,n,m; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0; i<n; i++) { scanf("%d",&a[i]); } int sum=0; int start=0; int i=0,mmin=n+1; for(i=0; i<n;) { while(sum<m && i<n) { sum+=a[i++]; // i++; } while(sum>=m) { mmin=min(mmin,i-start); sum-=a[start++]; } } if(mmin==n+1) printf("0\n"); else printf("%d\n",mmin); } return 0; }
相关文章推荐
- POJ-3061 Subsequence(队列求区间和)
- POJ---3061 Subsequence[队列求区间和]
- POJ-3061 Subsequence(维护一个区间)
- POJ 3061 - Subsequence
- POJ 3468-A Simple Problem with Integers(线段树:成段更新,区间求和)
- POJ 3061 Subsequence [尺取法] 《挑战程序设计竞赛》3.2
- poj 3061 Subsequence 二分
- POJ 3061 Subsequence
- POJ - 2823 Sliding Window (单调队列求解区间最值)
- 【DFS序+单点修改区间求和】POJ 3321 Apple Tree
- POJ-3061 Subsequence(尺取法)
- POJ 3061 Subsequence
- POJ 3061 · Subsequence【子序列】【二分】
- POJ 2828 Buy Tickets(单点更新 区间求和)
- poj 3061--Subsequence(尺取法)
- POJ-3468-A Simple Problem with Integers (线段树 区间求和)
- POJ 3061 Subsequence
- poj_4047Garden区间更新_求和
- poj 3061 Subsequence
- POJ 3061 Subsequence (尺取法)