http://poj.org/problem?id=3061
题意:找出一个连续子序列比m大,求最短符合题意的连续子序列的长度为多少?
#include <iostream> #include <stdio.h> #include <string.h> #include <string> #include <vector> #include <algorithm> #include <map> #include <queue> #include <stack> #include <math.h> using namespace std; #define INF 0x3f3f3f3f const int maxn = 110000; typedef long long LL; int a[maxn]; int n, m; int Judge(int len) { for(int i=1; i+len-1<=n; i++) { if(a[i+len-1]-a[i-1]>=m) return 1; } return 0; } int main() { int T, num; scanf("%d", &T); while(T --) { scanf("%d %d", &n, &m); memset(a, 0, sizeof(a)); for(int i=1; i<=n; i++) { scanf("%d", &num); a[i]=a[i-1]+num; } int l=1, r=n, mins=0; while(l<=r) { int mid=(l+r)/2; if(Judge(mid)) { mins=mid; r=mid-1; } else l=mid+1; } printf("%d\n", mins); } return 0; }
时间: 2024-10-25 08:24:09