Subsequence

Subsequence

https://ac.nowcoder.com/acm/problem/107658

//核心:尺取
//详情见注释;
#include<iostream>
using namespace std;
#define N 100000000 //取一个尽量大的数保证大于个数,用处见下文;
int a[100006];
int main(){
int n;
cin>>n;
while(n--){
int x,y;
cin>>x>>y;
for(int i=0;i<x;i++){
cin>>a[i];
}
int sum=0,l=0,r=0,hu,ans=N,flag=1;//ans初始化为N,就是保证符合条件的个数必小于ans,使ans第一次min比较能进行;
while(l<x){//l为左端点,所以l从最左边开始直到最右边;
while(r<x && sum<y){//while中需要同时满足r<x,并且sum<y,当全部加完都没打到sum也会结束循环,防止超时,开始也因为这个原因wa了
sum+=a[r];
r++;
}//因为尺取,所以上面的r并就留在第一个是sum符合情况的位置不用左移,之后再随着l右移而右移,
if(sum>=y) hu=r-l;//当sum符合条件,更新hu(用来存个数的)
if(l==0&&sum<y)flag=0;//如果全部加起来都小于y,所以没有符合要求的值;
ans=min(ans,hu);//因为求最小所以每个hu来都需要与ans比较ans保留较小值。
sum-=a[l++];//l左移,sum就随之而变化。
}
if(flag==0)cout<<0<<endl;//flag==0代表所有和都小于y没有答案输出0;反之则输出答案;
else cout<<ans<<endl;
}
return 0;
}</iostream>

全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务