[POJ2823]Sliding Window 滑动窗口(单调队列)
题意
刚学单调队列的时候做过
现在重新做一次
一个很经典的题目
现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。
思路
单调队列
一个递增
一个递减
代码
//author: sysky
#include<cstdio>
#define N 1000006
#define INF 0X3FFFFFFF
using namespace std;
int n,k;
int mina[N],maxa[N];
int minb[N],maxb[N];
int maxl=,maxr=,ansmax[N];
int minl=,minr=,ansmin[N];
int main()
{
int i;
scanf("%d%d",&n,&k);
maxa[]=INF;
mina[]=-INF;
for(int i=,a;i<=n;i++)
{
scanf("%d",&a);
while(maxb[maxl]<=i-k && maxl<maxr) ++maxl;
while(minb[minl]<=i-k && minl<minr) ++minl;
while(maxa[maxr-]<=a && maxl<maxr) --maxr;
while(mina[minr-]>=a && minl<minr) --minr;
maxa[maxr]=mina[minr]=a;
maxb[maxr++]=minb[minr++]=i;
ansmax[i]=maxa[maxl];
ansmin[i]=mina[minl];
}
for(int i=k;i<=n;i++) printf("%d ",ansmin[i]);
puts("");
for(int i=k;i<=n;i++) printf("%d ",ansmax[i]);
return ;
}
END.
[POJ2823]Sliding Window 滑动窗口(单调队列)的更多相关文章
- Sliding Window POJ - 2823 单调队列模板题
Sliding Window POJ - 2823 单调队列模板题 题意 给出一个数列 并且给出一个数m 问每个连续的m中的最小\最大值是多少,并输出 思路 使用单调队列来写,拿最小值来举例 要求区间 ...
- POJ 2823 滑动窗口 单调队列模板
我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0 ...
- Sliding Window - 题解【单调队列】
题面: An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving fr ...
- POJ 2823 滑动窗口 单调队列
https://vjudge.net/problem/POJ-2823 中文:https://loj.ac/problem/10175 题目 给一个长度为 $N$ 的数组,一个长为 $K$ 的滑动窗体 ...
- cogs 495. 滑动窗口 单调队列
495. 滑动窗口 ★★ 输入文件:window.in 输出文件:window.out 简单对比时间限制:2 s 内存限制:256 MB [问题描述] 给你一个长度为N的数组,一个长为 ...
- luoguP1886 滑动窗口 [单调队列]
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...
- [洛谷P1886]滑动窗口 (单调队列)(线段树)
---恢复内容开始--- 这是很好的一道题 题目描述: 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口. 现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的 ...
- [Luogu P1886]滑动窗口--单调队列入门
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...
- AcWing 154. 滑动窗口 单调队列
地址 https://www.acwing.com/problem/content/description/156/ 输入格式 输入包含两行. 第一行包含两个整数n和k,分别代表数组长度和滑动窗口的长 ...
随机推荐
- 在Ubuntu/CentOS/Debian系统下,使用CPU挖Monero (XMR)币
CentOS7(增加源) yum repolist # 查看yum源列表 yum localinstall http://dl.fedoraproject.org/pub/epel/7/x86_64/ ...
- python-类对象以字典模式操作
#类对象以字典模式操作 class Person: def __init__(self): self.cache={} def __setitem__(self, key, value): #增加或修 ...
- dialog自适应大小、固定大小、底部显示
创建一个从底部显示的对话框 if (dialog == null) { dialog = new Dialog(context, R.style.theme_from_bottom); View vi ...
- Java 多线程 - 生产者消费者问题
https://www.cnblogs.com/hckblogs/p/7858545.html
- 【译】索引进阶(七):SQL SERVER中的过滤索引
原文链接:传送门. To be continued...
- js 对象,数组,字符串,相互转换
1:对象转换数组 let obj = {'val1':1, 'val2':2, 'val3':3, 'val4':4}; var arr = [] for (let i in obj) { //取键 ...
- Vue报错——“Trailing spaces not allowed”
在VSCode中开发Vue 报错:“Trailing spaces not allowed” 这是空格多了,删除多余的空格就可以了
- jenkins+git(完全萌新的一篇,求指点)
自己不熟悉所以打算写一份新手的自我理解,有错误欢迎大家指出 公司使用jenkins和git对代码进行管理 首先我们将代码放在git上,然后通过一些方法(我还不知道啥方法) 将git的代码放在jenki ...
- Lesson 2-4(字典)
2.7 字典 &.字典是许多值的集合,索引可以使用许多不同的数据类型,不只是整数,可以是数.字符串或元组. &.字典的索引被称为“键”,键及其关联的值称为“键-值”对,这种键-值对也称 ...
- mysql主从不同步原理
mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负 ...