没想到啊没想到,时隔两个月,我单调队列又懵了……

调了一个小时,最后错在快读,啊!!!!(不过洛谷讨论真好啊,感谢大佬!)

考前就不推新东西了,好好写写那些学过的东西


题目点这里(我就不粘了自己点一下看吧)

这题还有其他奇奇怪怪的做法,比如你可以当做RMQ,用线段树啊ST表啊随便你,不过单调队列就可以了

单调队列说到底就是个数据结构,就是维护数据的。

以当前这道题为例:

它维护的队列一定满足单调性,单调递增或递减,或者自定义一个单调性。

如何维护呢,假设当前队尾为q [ tail ], 要插入元素为 a [ i ]

  • 若直接插入 a [ i ] 满足其单调性,就直接插入
  • 若不满足,就删掉 q [ tail ] ( tail - - ) ,因为能取到 q [  tail ] 就一定能取到 a [ i ] , 而a [ i ] 更优

这题既然要求最大值和最小值,就求两遍嘛!

下面是代码

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,k,a[],q[],p[],head,tail;
inline int read()
{
int x=;
char c=getchar();
int flag=;
while (c>''||c<'')
{
if (c=='-')
flag*=-;
c=getchar();
} //就是这里!!!!记住它!!!
while (c<=''&&c>='') x=x*+c-,c=getchar();
x*=flag;
return x;
}//这个坑死我的快读啊!!!!!!考前一定要多打几遍
int main()
{
n=read(); k=read();
for (int i=; i<=n; i++)
a[i]=read();
// 求 min
head=; tail=;
for (int i=; i<=n; i++)
{
while (head<=tail&&q[tail]>=a[i])
tail--;
//首先保证不要删过,head<=tail(tail可以等于head)
//求最小那么单调性就是单调递增
q[++tail]=a[i];
p[tail]=i;//插入队列
while (p[head]<=i-k) head++;//更新队头,使最值在区间内
if (i>=k) cout<<q[head]<<" ";//k往后每一个i都对应一个窗口,输出队头存储的最值即可
}
cout<<endl;
head=,tail=;
// 求 max ,类比求 min
for (int i=; i<=n; i++)
{
while (head<=tail&&q[tail]<=a[i])
tail--;
//最大值就是单调递增
q[++tail]=a[i];
p[tail]=i;
while (p[head]<=i-k) head++;
if (i>=k) cout<<q[head]<<" ";
}
return ;//快考试啦不要抄答案!!!(给我自己
}

就是这些,CSP快到啦,RP++!!

惯例

ありがとうございます

【洛谷P1886】滑动窗口——单调队列的更多相关文章

  1. 洛谷 P1886 滑动窗口(单调队列)

    题目链接 https://www.luogu.org/problemnew/show/P1886 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始 ...

  2. [洛谷P1886]滑动窗口 (单调队列)(线段树)

    ---恢复内容开始--- 这是很好的一道题 题目描述: 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口. 现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的 ...

  3. 洛谷P1886 滑动窗口(POJ.2823 Sliding Window)(区间最值)

    To 洛谷.1886 滑动窗口 To POJ.2823 Sliding Window 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每 ...

  4. 洛谷 P1886 滑动窗口(单调队列)

    嗯... 题目链接:https://www.luogu.org/problem/P1886 首先这道题很典型,是标准的单调队列的模板题(也有人说单调队列只能解决这一个问题).这道题可以手写一个队列,也 ...

  5. 洛谷 P1886 滑动窗口

    题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...

  6. [Luogu P1886]滑动窗口--单调队列入门

    题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...

  7. 洛谷 P1886 滑动窗口 (数据与其他网站不同。。)

    题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...

  8. 洛谷——P1886 滑动窗口|| POJ——T2823 Sliding Window

    https://www.luogu.org/problem/show?pid=1886#sub || http://poj.org/problem?id=2823 题目描述 现在有一堆数字共N个数字( ...

  9. 洛谷P1886--滑动窗口(单调队列模板)

    https://www.luogu.org/problemnew/show/P1886 单调队列的操作上比普通队列多了可以从尾端出队 单调队列保持队内元素单调递增/递减,以保证队首元素为最小/最大元素 ...

  10. [POJ2823][洛谷P1886]滑动窗口 Sliding Window

    题目大意:有一列数,和一个窗口,一次能框连续的s个数,初始时窗口在左端,不断往右移动,移到最右端为止,求每次被框住的s个数中的最小数和最大数. 解题思路:这道题是一道区间查询问题,可以用线段树做.每个 ...

随机推荐

  1. json的值键对,对象,数组,逻辑值

    详细说一下有关json的相关知识: ㈠json与xml的异同 ★与 XML 相同之处 ⑴JSON 是纯文本 ⑵JSON 具有"自我描述性"(人类可读) ⑶JSON 具有层级结构(值 ...

  2. Protocol Buffers 开发者指南

    欢迎来到 protocol buffers 的开发者指南.protocol buffers 是一个语言中立,平台中立针对通讯协议,数据存储和其他领域中对结构化数据进行序列化的扩展方法. 本文档主要针对 ...

  3. 51 Nod 1068 Bash游戏v3

    1068 Bash游戏 V3  题目来源: Ural 1180 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一堆石子共有N个.A B两个人轮流 ...

  4. 【PKUSC2019】线弦图【计数】【树形DP】【分治FFT】

    Description 定义线图为把无向图的边变成点,新图中点与点之间右边当且仅当它们对应的边在原图中有公共点,这样得到的图. 定义弦图为不存在一个长度大于3的纯环,纯环的定义是在环上任取两个不相邻的 ...

  5. pycharm2018.3 x64激活

    今天把pycharm从2018.2.4更新到了2018.3.7,需要重新激活,激活方式如下: 1.修改hosts文件,将下面两句话添加到hosts文件,保存 0.0.0.0 account.jetbr ...

  6. python 手动拼接json数据

    第一步:分别拼接为字符串 第二步:将字符串转化为list 第三歩:将两个list合并为dict 第四步:将dict转换为接送数据 如:  import json keys = ['a', 'b', ' ...

  7. 「TJOI2019」大中锋的游乐场

    题目链接 问题分析 比较明显的最短路模型.需要堆优化的dij.建图的时候注意细节就好. 参考程序 #include <bits/stdc++.h> #define LL long long ...

  8. js多种方法取数组的最后一个元素

    一: pop()方法 pop()方法,删除数组最后一个并返回该元素 利用这个方法可以取到数组的最后一个,同理shift()可以取到数组的第一个(shift()删除数组第一个并返回该元素) var ar ...

  9. 微信小程序_(map)简单的小地图

    map地图效果 官方文档:传送门 Page({ data: { markers: [{ iconPath: "/resources/others.png", id: 0, lati ...

  10. jar 在windows 启动服务,卸载服务,停止端口

    参考:https://www.cnblogs.com/zhuchunlei/p/9469569.html 1,启动服务  install.bat @echo off SET JAVA_HOME=&qu ...