Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 11048 | Accepted: 4571 |
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
尺取法入门题目,对于我这个大菜鸟有很大帮助啊
代码:
#include<iostream> #include<algorithm> #include<cstdlib> #include<sstream> #include<cstring> #include<cstdio> #include<string> #include<deque> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; int main (void) { int n,i,j,t,l,r,goal,minm; scanf("%d",&t); while (t--) { scanf("%d%d",&n,&goal); int *list=new int[n+1]; for (i=1; i<=n; i++) { scanf("%d",&list[i]); } l=r=1; minm=100000009; int temp=0; while (1) { while (r<=n&&temp<goal) { temp+=list[r++]; } if(temp<goal) break; minm=min(r-l,minm); temp-=list[l++]; } if(minm==100000009) printf("0\n"); else printf("%d\n",minm); delete []list; } return 0; }