图片加载可能有点慢,请跳过题面先看题解,谢谢
在切水题的道路上狂奔,一发不可收拾。。。
这道题好像不用写什么题解吧,吐个槽什么的算了
一眼题,大佬们都不屑于做,只有我这种弱菜才来写这种题目玩儿记个前缀和,直接二分一个长度, \(XJB\) 搞一下就好了
思考时间: \(1s\) ,代码时间 \(1min\) 。//made by Hero_of_Someone#include#include #include #include #define ll long long#define il inline#define RG registerusing namespace std;il int gi(){ RG int x=0,q=1; RG char ch=getchar(); while( ( ch<'0' || ch>'9' ) && ch!='-' ) ch=getchar(); if( ch=='-' ) q=-1,ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x; }int T,n,s,a[100010];ll sum[100010];il void init(){ memset(sum,0,sizeof(sum)); for(RG int i=1;i<=n;i++) a[i]=gi(); for(RG int i=1;i<=n;i++) sum[i]=sum[i-1]+a[i];}il bool ck(int len){ for(RG int i=len;i<=n;i++) if(sum[i]-sum[i-len]>=s) return 1; return 0;}il void work(){ RG int l=1,r=n,ans=0; while(l<=r){ RG int mid=(l+r)>>1; if(ck(mid)) ans=mid,r=mid-1; else l=mid+1; } printf("%d\n",ans);}int main(){ while(scanf("%d%d",&n,&s)!=EOF){ init(); work(); } return 0; }