标签: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