标签:poj3061
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8843 | Accepted: 3506 |
Description
Input
Output
Sample Input
2 10 15 5 1 3 5 10 7 4 9 2 8 5 11 1 2 3 4 5
Sample Output
2 3
Source
版本一:79ms C++#include <stdio.h> #include <string.h> #include <algorithm> #define maxn 100010 int S[maxn], N, K; int main() { int i, T, cnt, tmp; scanf("%d", &T); while(T--) { scanf("%d%d", &N, &K); for(i = 0; i < N; ++i) { scanf("%d", &S[i]); if(i) S[i] += S[i - 1]; } if(S[N - 1] < K) { printf("0\n"); continue; } cnt = N + 1; for(i = 0; i < N && S[i] + K <= S[N - 1]; ++i) { tmp = std::lower_bound(S + i, S + N, S[i] + K) - S - i; cnt = std::min(cnt, tmp); } printf("%d\n", cnt); } return 0; }
#include <stdio.h> #include <string.h> #include <algorithm> #define maxn 100010 int S[maxn], N, K; int main() { int i, T, cnt, sum, s, t; scanf("%d", &T); while(T--) { scanf("%d%d", &N, &K); for(i = 0; i < N; ++i) scanf("%d", &S[i]); cnt = N + 1; sum = s = t = 0; for(i = 0; i < N; ++i) { sum += S[i]; while(sum >= K) { t = i - s + 1; cnt = std::min(cnt, t); sum -= S[s++]; } } if(cnt > N) cnt = 0; printf("%d\n", cnt); } return 0; }
标签:poj3061
原文地址:http://blog.csdn.net/chang_mu/article/details/40860081