标签:define ace color i++ algorithm while lse line cut
Input
Output
Sample Input
2 10 15 5 1 3 5 10 7 4 9 2 8 11 1 2 3 4 5
Sample Output
2 3
题解:求连续子序列和大于等于s的最小长度。可以尺取,若sum<s,左指针右移,若sum>=s右指针左移,当sum<s时左指针继续右移,满足条件打擂台即可。
1 #include<cstring> 2 #include<cstdio> 3 #include<algorithm> 4 #define Inf 0x3f3f3f3f 5 #define ll long long 6 using namespace std; 7 ll str[123400]; 8 int main() 9 { 10 ll i,j,m,n,t; 11 scanf("%lld",&t); 12 while(t--) 13 { 14 scanf("%lld%lld",&m,&n); 15 for(i=0;i<m;i++) 16 { 17 scanf("%lld",&str[i]); 18 } 19 ll sum=0,cnt=0,cur=0,flag=0,ans=Inf,count1=0; 20 while(cur<m) 21 { 22 while(count1<m&&sum<=n) 23 { 24 sum+=str[count1++]; 25 } 26 if(sum<n) 27 break; 28 flag=1; 29 sum-=str[cur]; 30 ans=min(ans,count1-cur); 31 cur++; 32 } 33 if(flag) 34 printf("%lld\n",ans); 35 else 36 puts("0"); 37 } 38 return 0; 39 40 }
标签:define ace color i++ algorithm while lse line cut
原文地址:https://www.cnblogs.com/moomcake/p/9343255.html