luoguP1886 滑动窗口(单调队列模板题)
题目链接:https://www.luogu.org/problem/P1886#submit
题意:给定n个数,求大小为k的滑动窗口中最小值和最大值。
思路:单调队列模板题。
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std; const int maxn=1e6+;
int n,k,head,tail;
int a[maxn],q[maxn],p[maxn]; int main(){
scanf("%d%d",&n,&k);
for(int i=;i<=n;++i)
scanf("%d",&a[i]);
head=,tail=;
for(int i=;i<=n;++i){
while(tail>=head&&q[tail]>=a[i])
--tail;
q[++tail]=a[i];
p[tail]=i;
while(p[head]<=i-k)
++head;
if(i>=k) printf("%d ",q[head]);
}
printf("\n");
head=,tail=;
for(int i=;i<=n;++i){
while(tail>=head&&q[tail]<=a[i])
--tail;
q[++tail]=a[i];
p[tail]=i;
while(p[head]<=i-k)
++head;
if(i>=k) printf("%d ",q[head]);
}
printf("\n");
return ;
}
luoguP1886 滑动窗口(单调队列模板题)的更多相关文章
- luoguP1886 滑动窗口 [单调队列]
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...
- 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 POJ - 2823 单调队列模板题
Sliding Window POJ - 2823 单调队列模板题 题意 给出一个数列 并且给出一个数m 问每个连续的m中的最小\最大值是多少,并输出 思路 使用单调队列来写,拿最小值来举例 要求区间 ...
- [Luogu P1886]滑动窗口--单调队列入门
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...
- Acwing 154 滑动窗口(单调队列)经典模板
给定一个大小为n≤106n≤106的数组. 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边. 您只能在窗口中看到k个数字. 每次滑动窗口向右移动一个位置. 以下是一个例子: 该数组为[1 3 ...
- POJ 2823 滑动窗口 单调队列
https://vjudge.net/problem/POJ-2823 中文:https://loj.ac/problem/10175 题目 给一个长度为 $N$ 的数组,一个长为 $K$ 的滑动窗体 ...
- [洛谷P1886]滑动窗口 (单调队列)(线段树)
---恢复内容开始--- 这是很好的一道题 题目描述: 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口. 现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的 ...
- cogs 495. 滑动窗口 单调队列
495. 滑动窗口 ★★ 输入文件:window.in 输出文件:window.out 简单对比时间限制:2 s 内存限制:256 MB [问题描述] 给你一个长度为N的数组,一个长为 ...
- [POJ2823]Sliding Window 滑动窗口(单调队列)
题意 刚学单调队列的时候做过 现在重新做一次 一个很经典的题目 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗 ...
随机推荐
- flex布局 justify-content:space-between; 解决最后一排数量不够自动向两端排列问题和flex布局的元素会有默认间隙(垂直间隙)
1 .flex 布局两端对齐当最后一排数量不够时,会出现以下布局情况 实现效果: 解决方案:使用after伪类, 解决最后一排数量不够两端分布的情况.宽度就是每张图片的宽度 .list:after { ...
- SpringBoot常见报错及解决方法
问题一 Field redisUtil in com.sui.demo.controller.redisController required a bean of type 'com.sui.demo ...
- CDOJ 1264 人民币的构造 区间问题+数论
人民币的构造 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status ...
- HZOJ 20190727 随(倍增优化dp)
达哥T1 实际上还是挺难的,考试时只qj20pts,还qj失败 因为他专门给出了mod的范围,所以我们考虑把mod加入时间复杂度. $50\%$算法: 考虑最暴力的dp,设$f[i][j]$表示进行$ ...
- vue子组件改变父组件的值
1 在父组件的coment绑定事件 <template> <div :class="classObj" class="app-wrapper" ...
- C++中void和void*指针的含义 (指针类型的含义)
转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻 ...
- Java并发编程(十一)——原子操作CAS
一.原子操作 syn基于阻塞的锁的机制,1.被阻塞的线程优先级很高,2.拿到锁的线程一直不释放锁怎么办?3.大量的竞争,消耗cpu,同时带来死锁或者其他安全. CAS的原理 CAS(Compare A ...
- (七)C语言之顺序结构
- sscanf(char*,char*,,,,) sprintf(char*," ",,,);
从字符串读取格式化输入 输入到字符串中
- R语言中的Single link和Complete link
下图表示A.B.C.D.E各点相互之间的距离 一.Single link结果: 1.找A.B.C.D.E各点之间距离最短的 A和B为4,即AB连在一起(之后把它俩看成一个整体): 2.找除(第一步)以 ...