周赛9D - 长度最小的子数组
public
May 09, 2025
Never
20
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=3e5+10; 4 int a[N]; 5 int T,n,l,r,ans; 6 long long s,sum; 7 int main() 8 { 9 ios::sync_with_stdio(false); 10 cin.tie(0);cout.tie(0); 11 12 cin>>T; 13 while(T--) 14 { 15 cin>>n>>s; 16 if(s==0) 17 { 18 cout<<1<<'\n'; 19 continue; 20 } 21 l=1;r=0;sum=0;ans=0x3f3f3f3f; 22 for(int i=1;i<=n;i++) 23 { 24 cin>>a[i]; 25 r++;sum+=a[i]; 26 while(sum>=s) 27 { 28 ans=min(ans,r-l+1); 29 sum-=a[l],l++; 30 } 31 } 32 if(ans==0x3f3f3f3f) cout<<0<<'\n'; 33 else cout<<ans<<'\n'; 34 } 35 return 0; 36 }