单调队列

来源:互联网 发布:淘宝头像 编辑:程序博客网 时间:2024/06/05 22:40
scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&x);    if(i>m)dp[i]=x+dp[a[head]];else dp[i]=x;while(head<=tail && dp[a[tail]]>=dp[i]) tail--;    a[++tail]=i;    while(a[head]<=i-m) head++;}for(int i=n-m+1;i<=n;i++)ans=min(ans,dp[i]);printf("%d",ans);


//栈长度<=m

原创粉丝点击