# include <iostream> # include <cstring> using namespace std; const int N=100010; int n; long long s[N]; long long l,r; int x; long long y; int main(){ cin>>n; while(n--){ cin>>x>>y; memset(s,0,sizeof(s)); long long ss=9999999; for(int i=1;i<=x;i++) cin>>s[i]; for(int i=1;i<=x;i++) s[i]+=s[i-1]; l=1; int s1=ss; for(r=l;r<=x;){ if(s[r]-s[l-1]>=y) { ss=min(r-l+1,ss); l++; } else r++; } if(s1==ss) cout<<0<<endl; else cout<<ss<<endl; } return 0; }
总结:
忘记考虑一种情况了,如果是没有找到大于等于s的怎么办呢?
当时一直卡在这里,结果每次错了都爆零,主要是没有考虑完全,虽然题目没有说如果没有大于等于s的,以后遇见判断if的情况需要想一下如果一次if都没有进去怎么办。。。