洛谷 P1886 滑动窗口 题解

时间:2021-08-23 21:49:53

每日一题 day26 打卡

Analysis

单调队列模板

对于每一个区间,有以下操作:

1、维护队首(就是如果你已经是当前的m个之前那你就可以被删了,head++)

2、在队尾插入(每插入一个就要从队尾开始往前去除冗杂状态)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
#define maxn 1000000+10
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
int n,k;
int a[maxn];
int deque[maxn],deque_num[maxn];
inline void solve_min()
{
int head=,tail=;
for(int i=;i<=n;i++)
{
while(head<=tail&&deque[tail]>=a[i]) tail--;
deque[++tail]=a[i];
deque_num[tail]=i;
while(head<=tail&&deque_num[head]<=i-k) head++;
if(i>=k)
{
write(deque[head]);
printf(" ");
}
}
printf("\n");
}
inline void solve_max()
{
int head=,tail=;
for(int i=;i<=n;i++)
{
while(head<=tail&&deque[tail]<=a[i]) tail--;
deque[++tail]=a[i];
deque_num[tail]=i;
while(head<=tail&&deque_num[head]<=i-k) head++;
if(i>=k)
{
write(deque[head]);
printf(" ");
}
}
}
signed main()
{
n=read();k=read();
for(int i=;i<=n;i++) a[i]=read();
solve_min();
memset(deque,,sizeof(deque));
memset(deque_num,,sizeof(deque_num));
solve_max();
return ;
}
/*
10 3
-94 21 24 73 38 77 11 73 9 -88 -94 21 24 38 11 11 9 -88
24 73 73 77 77 77 73 73
*/

请各位大佬斧正(反正我不认识斧正是什么意思)

洛谷 P1886 滑动窗口 题解的更多相关文章

  1. 洛谷P1886 滑动窗口(POJ&period;2823 Sliding Window)(区间最值)

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

  2. &lbrack;POJ2823&rsqb;&lbrack;洛谷P1886&rsqb;滑动窗口 Sliding Window

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

  3. 洛谷 P1886 滑动窗口&lpar;单调队列&rpar;

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

  4. 洛谷P1886滑动窗口

    题目传送门 理解题意:给定一个数列和窗口范围k,求依次向右移动窗口时每次窗口内的最大和最小值. 没什么思维难度,一边扫过去,用两个数组maxx和minn记录每个窗口内的最大最小值,移动过程中用两个变量 ...

  5. 洛谷 P1886 滑动窗口

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

  6. &lbrack;洛谷P1886&rsqb;滑动窗口 &lpar;单调队列&rpar;&lpar;线段树&rpar;

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

  7. 洛谷 P1886 滑动窗口 &lpar;数据与其他网站不同。。&rpar;

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

  8. 洛谷——P1886 滑动窗口&vert;&vert; 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/problem/P1886 首先这道题很典型,是标准的单调队列的模板题(也有人说单调队列只能解决这一个问题).这道题可以手写一个队列,也 ...

随机推荐

  1. SonarQube-5&period;6&period;3 代码分析平台搭建使用

    python代码分析 官网主页: http://docs.sonarqube.org/display/PLUG/Python+Plugin Windows下安装使用: 快速使用: 1.下载jdk ht ...

  2. 用arp-scan扫描局域网IP地址

    1,在安装之前需要安装yum install -y libpcap libpcap-devel如果没有安装yum工具需要用rpm安装如下软件包[root@oradba arp-scan-1.8]# y ...

  3. python核心编程第六章练习6-10

    6-10.字符串.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转,比如,输入“Mr.Ed”,应该返回“mR.eD”作为输出.[答案]代码如下: #!/usr/bin/env py ...

  4. Linux网络编程7&mdash&semi;&mdash&semi;使用TCP实现双方聊天

    思路 主线程负责发送消息,另一线程负责接收消息.服务端和客户端均是如此. 注意 当A方close掉用于通信的socket端口后,该端口是不会立即关闭的.因为此时可能B方的信息还没send完.因此,此时 ...

  5. grub2 使用memdisk工具 启动任意iso

    root@zhanghua-Inspiron-:/home/zhanghua# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda6 60G 12G 46G 21% / none ...

  6. php采集文章中的图片获取替换到本地

    /** * 获取替换文章中的图片路径 * @param string $xstr 内容 * @param string $keyword 创建照片的文件名 * @param string $oriwe ...

  7. Oracle 总账年终结算流程

     1.Oracle 总账应用中年终结算流程包含在开启/关闭期间程序里.当用户开启新一年的第一个期间,开启/关闭期间程序中的"gloire" 流程会完成传送所有收入及支出(损益表 ...

  8. JAVA8 中 LocalDateTime的使用小栗子

    LocalDate givenDate = LocalDate.parse("2019-04-23",DateTimeFormatter.ofPattern("yyyy- ...

  9. jQuery的Cookie使用

    为程序设置Cookie,可以在C#内进行,也可以在前端进行.如jQuery的Cookie也是一个很不错的插件. 在使用之前,可以先使用NuGet来安装cookie: 在MVC的视图中,引用jQuery ...

  10. 一次ajax请求导致status为canceled的原因小记

    偶然碰到一个小Bug ajax请求执行后返回了一个canceled(状态码) 但是后台却接受了参数并且执行成功0.0 刚看到这个状态的时候是一脸懵逼的.... 之前并没见过这样的状态码 经过参数确认并 ...