caioj 1172 poj 2823 单调队列过渡题
给定一个n个数的数列,从左至右输出每个长度为m的数列段内的最大数。
输入:第一行两个整数n和m( 1<= n <= 20 0000,m<=n)。下来给出n个整数。
输出:一行一个整数,表示每连续m个数的最大值。
样例输入:
8 3
1 3 -1 -3 5 3 6 7
样例输出:
3
3
5
5
6
7
维护一个单调队列,列内严格递减。若是首端元素已经脱离当前M个元素的区间,则去除。若是新元素比队尾元素严格小,直接入队,否则元素出队至合格后,新元素入队。比较模板了:
#include <bits/stdc++.h>
using namespace std; #define ll long long
#define pii pair<int,int>
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define pb push_back
#define fi first
#define se second const double eps=1e-, PI=acos(-1.0f);
const int inf=0x3f3f3f3f;
const int maxN=2e5+;
int N, M, K, T;
int g[maxN];
deque<pii> dq; int main() {
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif
scanf("%d%d", &N, &M);
for (int i = ; i <= N; ++i)
scanf("%d", &g[i]);
for (int i = ; i <= N; ++i) {
while (dq.size() && dq.back().fi <= g[i])
dq.pop_back();
dq.push_back(pii(g[i], i));
while (dq.back().se - dq.front().se + > M)
dq.pop_front();
if (i >= M)
printf("%d\n", dq.front().fi);
}
return ;
}
用数组实现deque,得交c++,G++会TLE
#include <stdio.h>
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define maxN 1000005
int n, k, t, ab[maxN], as[maxN];
int lb, rb, ls, rs;
struct node{int v, i;} a, B[maxN], S[maxN]; int main () {
//freopen("data.in", "r", stdin);
scanf("%d%d", &n, &k);
lb = rb = ls = rs = ;
FOR(i, , n) {
scanf("%d", &a.v), a.i = i;
while (ls < rs && S[rs - ].v >= a.v) rs--;
S[rs++] = a;
if (S[ls].i <= i - k) ++ls;
if (i >= k) ab[i] = S[ls].v; while (lb < rb && B[rb - ].v <= a.v) rb--;
B[rb++] = a;
if (B[lb].i <= i - k) ++lb;
if (i >= k) as[i] = B[lb].v;
}
FOR(i, k, n) printf(i == k ? "" : " "), printf("%d", ab[i]);
puts("");
FOR(i, k, n) printf(i == k ? "" : " "), printf("%d", as[i]);
return ;
}
caioj 1172 poj 2823 单调队列过渡题的更多相关文章
- Sliding Window POJ - 2823 单调队列模板题
Sliding Window POJ - 2823 单调队列模板题 题意 给出一个数列 并且给出一个数m 问每个连续的m中的最小\最大值是多少,并输出 思路 使用单调队列来写,拿最小值来举例 要求区间 ...
- poj 2823单调队列模板题
#include<stdio.h>//每次要吧生命值长的加入,吧生命用光的舍弃 #define N 1100000 int getmin[N],getmax[N],num[N],n,k, ...
- POJ 2823 单调队列入门水题
最最基础的单调队列题目.一个单增一个单减.还是可以借此好好理解一下单调队列的. #include <stdio.h> #include <string.h> #include ...
- poj 2823 单调队列
思路:裸的单调队列. #include<iostream> #include<cstring> #include<cstdio> #include<algor ...
- POJ 2823 Sliding Window (模板题)【单调队列】
<题目链接> <转载于>>> > 题目大意: 给你一段序列和一个长为k的窗口,这个窗口从最左边逐渐向右滑,直到滑到最右边,问你,该窗口在滑动的过程中,最大值和 ...
- luoguP1886 滑动窗口(单调队列模板题)
题目链接:https://www.luogu.org/problem/P1886#submit 题意:给定n个数,求大小为k的滑动窗口中最小值和最大值. 思路:单调队列模板题. AC代码: #incl ...
- POJ 2823 Sliding Window(单调队列入门题)
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 67218 Accepted: 190 ...
- POJ 2838 单调队列
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 55309 Accepted: 15911 ...
- 刷题向》POJ2823 单调队列裸题(<不会做,请自裁>系列)
最近BZOJ炸了,而我的博客上又更新了一些基本知识,所以这里刷一些裸题,用以丰富知识性博客 POJ2823 滑动的窗口 这是一道经典的单调队题,我记得我刚学的时候就是用这道题作为单调队列的例题,算 ...
随机推荐
- golang基础--func函数
函数function Go函数不支持 嵌套, 重载和默认参数 支持以下特性: 无须声明原型,不定长度长度变参,多返回值,命名返回值参数,匿名函数,闭包 定义函数使用关键字func,且左侧大括号不能另起 ...
- Spring配置Quartz任务调度、及 ThreadPool 线程池
ONE.除了引入 Spring 相关的 jar 包,还要引入 Quartz 的 jar 包 <dependency> <groupId>org.springframework& ...
- unity游戏开发之entitas框架
框架介绍 entitas是一个超快.超轻量的c# Entity-Component-System (ECS)框架,专门为Unity引擎设计.提供内部缓存和高速的组件访问,经过精心设计,可以在垃圾收集环 ...
- c# 获取应用程序exe文件路径及退出应用程序的几种方法
this.GetType().Assembly.Location; Application.ExecutablePath; Application.StartupPath:和上面的相比缺少可执行文件 ...
- Shell脚本编写3---Shell 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 执行脚本,查看输出结果: 另外 ...
- WinForm通过操作注册表实现限制软件使用次数的方法
1.创建注册表文件: 打开记事本,输入一些内容: ? 1 2 3 REGEDIT4 [HKEY_CURRENT_USER/Software/MyRegDataApp] "UseTime&qu ...
- mysql 表支持事务的方法
1.在mysql客户管,如:Navicate.SQLyog在导航面板中选择要转换为InnoDB存储引擎类型的数据库,例如选择db_yunping数据库.如下图所示: 2. 在查询窗口中输入 show ...
- [日常] PHP设置 include_path 配置选项
动态设置php.ini中的include_path 配置选项: 两种方式set_include_path($new_include_path)ini_set('include_path',$new_i ...
- HDU 1016 S-Nim ----SG求值
S-Nim Time Limit : 5000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
- WCF使用net.tcp传输文件
摘要:今天看了一些官方的资料和配置,简单写了一个WCF服务来传递一个文件,借此看看WCF传输大文件的能力,这里采用的是NetTcp绑定,之所以没有采用 basicHttpBinding是因为考虑这种方 ...