单调队列
来源:互联网 发布:淘宝产品分类 编辑:程序博客网 时间:2024/06/06 04:00
问题描述:给你一个大小为N的数组,再给你一个K值,要你计算[1,K],[2,K+1],[3,K+2],……,[N-K+1,N]这几段区间的最大值的和并输出。
#include<cstdio>#include<cstring>struct queue{int data[100005];int lp;int rp;queue(){memset(data,0,sizeof(data));lp=rp=0;}void push(int a){data[rp++]=a;}void pop_l(){lp++;}void pop_r(){rp--;}int front(){return data[lp];}int back(){return data[rp-1];}bool empty(){if(lp==rp)return 1;else return 0;}}q;int num[100005]={101};int main(){int n,k,i,ans=0;scanf("%d%d",&n,&k);for(i=1;i<=n;i++)scanf("%d",&num[i]);for(i=1;i<k;i++){while(!q.empty()&&num[q.back()]<num[i])q.pop_r();q.push(i);}for(;i<=n;i++){if(q.front()==i-k)q.pop_l();while(!q.empty()&&num[q.back()]<num[i])q.pop_r();q.push(i);ans+=num[q.front()];//printf("%d\n",ans);}printf("%d\n",ans);return 0;} /*输入示例:10 35 8 6 2 3 7 4 2 2 9输出示例:56 */
0 0
- 单调栈 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- Java文件下载结合多线程
- 网格去噪算法(two-step framework)
- 动态规划-多阶段决策问题
- iOS 导出证书.p12文件
- Java多线程之捕获异常
- 单调队列
- Annotation(三)——Spring注解开发
- 后期生成事件之拷贝生成后的dll
- 第二课的课后练习
- android.graphics.Paint方法setXfermode (Xfermode x...
- liunx c语言制作 微型web服务器 300行代码
- 动态规划的基本概念和最优化原理
- CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
- 打包时出现No matching provisioning profile found错误的解决方法