【单调队列】poj 2823 Sliding Window
http://poj.org/problem?id=2823
【题意】
- 给定一个长度为n的序列,求长度为k的滑窗内的最大值和最小值
【思路】
- 裸的单调队列
- 注意用C++提交,不然会T,orz我用G++T了好长时间
【AC】
//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int n,k;
const int maxn=1e6+;
int a[maxn];
int mx[maxn];
int mn[maxn];
struct node
{
int x;
int pos;
}q[maxn];
void solve()
{
//mx
int head=;int tail=;
for(int i=;i<=n;i++)
{
while(tail>=head&&q[tail].x<=a[i]) tail--;
q[++tail].x=a[i];q[tail].pos=i;
while(q[head].pos<=i-k) head++;
if(i>=k) mx[i]=q[head].x;
}
//mn
head=;tail=;
for(int i=;i<=n;i++)
{
while(tail>=head&&q[tail].x>=a[i]) tail--;
q[++tail].x=a[i];q[tail].pos=i;
while(q[head].pos<=i-k) head++;
if(i>=k) mn[i]=q[head].x;
}
for(int i=k;i<=n;i++)
{
if(i!=n) printf("%d ",mn[i]);
else printf("%d",mn[i]);
}
puts("");
for(int i=k;i<=n;i++)
{
if(i!=n) printf("%d ",mx[i]);
else printf("%d",mx[i]);
}
puts("");
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
solve();
}
return ;
}
单调队列
【单调队列】poj 2823 Sliding Window的更多相关文章
- POJ 2823 Sliding Window + 单调队列
		一.概念介绍 1. 双端队列 双端队列是一种线性表,是一种特殊的队列,遵守先进先出的原则.双端队列支持以下4种操作: (1) 从队首删除 (2) 从队尾删除 (3) 从队尾插入 (4) ... 
- POJ 2823 Sliding  Window 题解
		POJ 2823 Sliding Window 题解 Description An array of size n ≤ 106 is given to you. There is a sliding ... 
- 洛谷P1886 滑动窗口(POJ.2823 Sliding Window)(区间最值)
		To 洛谷.1886 滑动窗口 To POJ.2823 Sliding Window 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每 ... 
- poj 2823 Sliding Window (单调队列入门)
		/***************************************************************** 题目: Sliding Window(poj 2823) 链接: ... 
- POJ 2823 Sliding Window(单调队列入门题)
		Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 67218 Accepted: 190 ... 
- POJ 2823 Sliding Window  【单调队列】
		题目链接:http://poj.org/problem?id=2823 题目大意:给出一组数,一个固定大小的窗体在这个数组上滑动,要求出每次滑动该窗体内的最大值和最小值. 这就是典型的单调队列,单调队 ... 
- 题解报告:poj 2823 Sliding Window(单调队列)
		Description An array of size n ≤ 106 is given to you. There is a sliding window of size k which is m ... 
- POJ 2823 Sliding Window (线段树/单调队列)
		题目不说了,可以用线段树或者单调队列,下面附上代码. 线段树: #include <iostream> #include <stdio.h> #include <algo ... 
- poj 2823 Sliding Window(单调队列)
		/* 裸地单调队列.. 第一次写 写的好丑.... */ #include<iostream> #include<cstdio> #include<cstring> ... 
随机推荐
- Java之instanceof
			class Base{ int x = 1; static int y = 2; String name(){ return "mother" ... 
- 你知道现在的.net是什么样的吗,一张图告诉你
			Here are these concepts used in an example sentence, for context: Application Framework - “Are you u ... 
- 访问修饰符(C# 参考)
			第一篇 就抄写了一下下MSDN上面的东西练练手吧!!! 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性. 本节介绍四个访问修饰符: public protected ... 
- Vue 前端面试题[转]
			https://mp.weixin.qq.com/s/Uxhx2dJ1Xbm6N3Gl7wNZNw Vue 前端面试题 游荡de蝌蚪 前端开发 1周前 作者:游荡de蝌蚪 https://segmen ... 
- JavaScript判断数组是否包含指定元素的方法
			本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** ... 
- 前台解析json的方法
			JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ... 
- 利用javascript实现二维数组的筛选
			背景: 在项目中,我需要对解析后的nc文件数据进行筛选,选出符合要求的点,绘制相应的polygon. 代码:ajax获取某一时刻的数据 var url ="/api/config/PostC ... 
- VUE2中axios的使用方法
			一,安装 npm install axios 二,在http.js中引入 import axios from 'axios'; 三,定义http request 拦截器,添加数据请求公用信息 axio ... 
- mysql:explain分析sql
			对于执行较慢的sql,可以使用explain命令查看这些sql的执行计划.查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看 mysql> explain ... 
- 分享读C Primer Plus时遇到的一个问题(补档5月7日)
			最近在学习C Primer Plus.书中第66页,3.8 关键概念 这一小节中有这一段话: “计算机中的浮点数和整数在本质上不同,其存储方式和运算过程有很大区别.即使两个 32 位存储单元存储的位组 ... 
