题目链接
题意
给出一个序列和一个数字,求最短连续子序列的和大于这个数字,求这个子序列长度
思路
- 利用前缀和求和,然后遍历开始节点和结束节点即可,节点不需要回退
参考代码
#include<iostream>
using namespace std;
int aa[100010];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,s;
cin>>n>>s;
for(int i=1; i<=n; i++)
{
cin>>aa[i];
aa[i]+=aa[i-1];
}
int ans=999999;
int pos=0;
for(int i=1; i<=n; i++)
{
while(aa[i]-aa[pos]>=s)
{
ans=min(ans,i-pos);
pos++;
}
}
if(ans==999999)
cout<<0<<endl;
else
cout<<ans<<endl;
}
}