POJ2823-Sliding Window
来源:互联网 发布:永琪和知画圆房的视频 编辑:程序博客网 时间:2024/06/05 19:08
给定一群数的集合,然后有一个大小为k的区间,这个区间从左往右滑动,输出每滑动一次,这个区间内的最大值和最小值。
G++无情的TLE了,但是!!C++压线过了!!
总之就是一个基本的单调队列,瞎搞一下就行了。
#include <cstdio>#include <deque>using namespace std;const int maxn = 1000000 + 10;int window[maxn];int main(int argc, char const *argv[]) { int n, k; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { scanf("%d", &window[i]); } deque<pair<int, int> > deq; for (int i = 0; i < n; i++) { int val = window[i]; while (!deq.empty() && val <= deq.back().first) { deq.pop_back(); } deq.push_back(make_pair(val, i)); if (i >= k - 1) { while (!deq.empty() && deq.front().second < i - k + 1) { deq.pop_front(); } printf("%d", deq.front().first); if (i != n - 1) { putchar(' '); } } } putchar('\n'); deq.clear(); for (int i = 0; i < n; i++) { int val = window[i]; while (!deq.empty() && val >= deq.back().first) { deq.pop_back(); } deq.push_back(make_pair(val, i)); if (i >= k - 1) { while (!deq.empty() && deq.front().second < i - k + 1) { deq.pop_front(); } printf("%d", deq.front().first); if (i != n - 1) { putchar(' '); } } } putchar('\n'); return 0;}
0 0
- 單調隊列::poj2823 Sliding Window
- poj2823 Sliding Window
- POJ2823:Sliding Window
- POJ2823--Sliding Window
- POJ2823 Sliding Window
- [Poj2823]Sliding Window
- poj2823 Sliding Window
- POJ2823 Sliding Window
- poj2823 Sliding Window
- POJ2823 Sliding Window
- 【poj2823】Sliding Window
- poj2823 Sliding Window
- POJ2823 Sliding Window
- poj2823 Sliding Window
- poj2823 -- Sliding Window
- POJ2823-Sliding Window
- poj2823 Sliding Window
- POJ2823-Sliding Window
- 什么是面向过程?什么是面向对象?
- jsonp跨域
- 新技术让SAP HANA向“通用”平台迈进
- python中文分词---jieba
- 进程和线程的区别与联系
- POJ2823-Sliding Window
- 深入学习百度地图Android SDK v4.0.0【第八关】离线地图
- 快速 和堆 排序算法
- Android Fragment 真正的完全解析(上)
- python核心编程学习笔记-2016-09-10-02-Web编程(二)
- Matlab基本运算
- Centos 下编译 Opencv
- 程序员应该知道的计算机网络知识
- 情景软工编程题(待更新)