[SMOJ2117]Sliding Window(静态RMQ问题)
来源:互联网 发布:彩票数据分析预测软件 编辑:程序博客网 时间:2024/05/21 10:38
单调队列模板题。
参考代码:
#include <algorithm>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>const int MAXN = 1e6 + 100;int n, k;int a[MAXN], ans[2][MAXN];int q1[MAXN], q2[MAXN];int l1, r1, l2, r2;inline int readint() { char c = getchar(); while ((c < '0' || c > '9') && c != '-') c = getchar(); int num = 0; int neg = 1; if (c == '-') { neg = -1; c = getchar(); } while (c >= '0' && c <= '9') { num = (num << 3) + (num << 1) + (c - '0'); c = getchar(); } return num * neg;}inline void writeint(int x) {// printf("%d\n", x); return; if (!x) putchar('0'); else if (x < 0) { putchar('-'); x *= -1; } static int t[10]; int i = 0; while (x) { t[i++] = x % 10; x /= 10; } while (i--) putchar(t[i] + '0'); putchar(' ');}int main(void) { freopen("2117.in", "r", stdin); freopen("2117.out", "w", stdout); n = readint(); k = readint(); for (int i = 0; i < n; i++) a[i] = readint(); q1[r1++] = q2[r2++] = 0; ans[0][0] = ans[1][0] = a[0]; for (int i = 1; i < k; i++) { ans[0][0] = std::min(ans[0][0], a[i]); ans[1][0] = std::max(ans[1][0], a[i]); while (r1 - l1 && a[q1[r1 - 1]] >= a[i]) --r1; while (r2 - l2 && a[q2[r2 - 1]] <= a[i]) --r2; q1[r1++] = q2[r2++] = i; } for (int i = k; i < n; i++) { while (r1 - l1 && i - q1[l1] >= k) ++l1; while (r2 - l2 && i - q2[l2] >= k) ++l2; while (r1 - l1 && a[q1[r1 - 1]] >= a[i]) --r1; while (r2 - l2 && a[q2[r2 - 1]] <= a[i]) --r2; q1[r1++] = q2[r2++] = i; ans[0][i - k + 1] = a[q1[l1]]; ans[1][i - k + 1] = a[q2[l2]]; } for (int i = 0; i + k <= n; i++) writeint(ans[0][i]); putchar('\n'); for (int i = 0; i + k <= n; i++) writeint(ans[1][i]); return 0;}
阅读全文
0 0
- [SMOJ2117]Sliding Window(静态RMQ问题)
- poj 2823 Sliding Window (线段树,RMQ)
- sliding window问题
- POJ 2823 Sliding Window (RMQ + 滚动数组)
- POJ - 2823 Sliding Window(单调队列RMQ)
- POJ 题目2823 Sliding Window(RMQ,固定区间长度)
- POJ 2823 Sliding Window【RMQ压缩(长度确定)】
- POJ--2823--Sliding Window----单调队列问题
- Sliding Window
- Sliding Window
- sliding window
- sliding window
- Sliding Window
- Sliding Window
- Sliding Window
- POJ 2823 Sliding Window 双端队列 or RMQ or 线段树
- poj 2823 Sliding Window 【固定区间长度的RMQ】 【二维压缩成一维】
- 【POJ 2823】Sliding Window (单调队列问题!!坑呀!!)
- MongoDB 数据备份鱼恢复
- 结合opencv配置dlib的人脸关键点定位算法
- Topcoder 2017 TCO Algorithm Round 3A Hard
- [Linux C编程]文件操作
- PCschematic10.0.1正式免狗中文版(带正版数据库).rar
- [SMOJ2117]Sliding Window(静态RMQ问题)
- Android权限大全
- 吴恩达机器学习课程笔记——第二周
- 利用GitHub搭建个人网站
- InputMethodService详解
- Java 字节流InputStream、OutputStream、FileInputStream、FileOutputStream
- AS 代码混淆+res混淆
- 【LeetCode】654. Maximum Binary Tree
- Matlab函数bwmorph简介 图像处理