【Codevs】3339 扫描 单调队列
来源:互联网 发布:java人机猜拳源代码 编辑:程序博客网 时间:2024/06/07 01:11
题面–>
题目描述 Description
有一个1 n 的矩阵,有n 个正整数。现在给你一个可以盖住连续的k 的数的木板。一开始木板盖住了矩阵的第1 k 个数,每次将木板向右移动一个单位,直到右端与第n 个数重合。每次移动前输出被覆盖住的最大的数是多少。
输入描述 Input Description
第一行两个数,n,k,表示共有n 个数,木板可以盖住k 个数。第二行n 个数,表示矩阵中的元素。
输出描述 Output Description
共 n-k+1 行
样例输入 Sample Input
5 31 5 3 4 2
样例输出 Sample Output
554
分析–>
单调递减队列。
从后面入队时,如果队尾元素 比 当前进入的 x 小,删除这个元素,直到删到 比 x 大。
如果 目前在单调队列的队首元素 已经不在 k 的覆盖范围内了, 就删去。
代码–>
#include <iostream>#include <queue>#include <cstring>#include <cstdio>using namespace std;int n, k;struct haha{ int v, p;};deque<haha> q;void push(int x, int p){ while(!q.empty() && q.back().v <= x) q.pop_back(); q.push_back((haha){x,p});}int main(){ int x; scanf("%d%d",&n,&k); for(int i = 1; i <= n; i ++) { scanf("%d",&x); push(x,i); if(i >= k){ while(q.front().p <= (i - k)) q.pop_front(); printf("%d\n",q.front()); } } return 0;}
1 0
- 【Codevs】3339 扫描 单调队列
- codevs 3339 扫描(优先队列)
- [CodeVs 4373] 窗口 ——单调队列
- bzoj 4295 Hazard 【循环】【单调队列】【扫描】
- Codevs 4373 窗口(线段树 单调队列 st表)
- codevs P4645 修理草坪-DP优化-单调队列
- codevs 3327 选择数字 单调队列优化DP
- codevs 3342 绿色通道(二分+dp+优先队列or单调队列)好题
- 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈
- 单调栈 单调队列
- codevs 3327(dp+单调队列优化)---以此记录我的脑残经历
- 【bzoj 1047】【codevs 1715】[HAOI2007]理想的正方形(单调队列)
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- spark collect遍历
- Axure的学习
- 【HUSTOJ】1024: 满足条件的数
- LeetCode------Number of 1 Bits
- 关于RT故障的解决办法
- 【Codevs】3339 扫描 单调队列
- 【BZOJ1070】【codevs2436】修车,费用流
- Struts 2中访问Servlet API的几种方法小结
- 设计模式(C++) -----单例模式
- Android学习之仿QQ聊天界面的实现
- Problem A: 打印出所有"水仙花数
- 深度学习之(DNN)深度神经网络
- spoj 后缀数组
- ssm架构的实现(包含项目文件)