【POJ】2823 Sliding Window
单调队列。
1 /* 2823 */ 2 #include <iostream> 3 #include <sstream> 4 #include <string> 5 #include <map> 6 #include <queue> 7 #include <set> 8 #include <stack> 9 #include <vector> 10 #include <deque> 11 #include <algorithm> 12 #include <cstdio> 13 #include <cmath> 14 #include <ctime> 15 #include <cstring> 16 #include <climits> 17 #include <cctype> 18 #include <cassert> 19 #include <functional> 20 #include <iterator> 21 #include <iomanip> 22 using namespace std; 23 //#pragma comment(linker,"/STACK:102400000,1024000") 24 25 #define sti set<int> 26 #define stpii set<pair<int, int> > 27 #define mpii map<int,int> 28 #define vi vector<int> 29 #define pii pair<int,int> 30 #define vpii vector<pair<int,int> > 31 #define rep(i, a, n) for (int i=a;i<n;++i) 32 #define per(i, a, n) for (int i=n-1;i>=a;--i) 33 #define clr clear 34 #define pb push_back 35 #define mp make_pair 36 #define fir first 37 #define sec second 38 #define all(x) (x).begin(),(x).end() 39 #define SZ(x) ((int)(x).size()) 40 #define lson l, mid, rt<<1 41 #define rson mid+1, r, rt<<1|1 42 43 const int maxn = 1e6+5; 44 int n, k; 45 int a[maxn]; 46 int Q[maxn], P[maxn]; 47 int mn[maxn], mx[maxn]; 48 49 void getMin() { 50 int l = 1, r = 0; 51 int i; 52 53 for (i=0; i<k-1; ++i) { 54 while (l<=r && Q[r]>=a[i]) 55 --r; 56 Q[++r] = a[i]; 57 P[r] = i; 58 } 59 60 for (; i<n; ++i) { 61 while (l<=r && Q[r]>=a[i]) 62 --r; 63 Q[++r] = a[i]; 64 P[r] = i; 65 while (P[l] < i-k+1) 66 ++l; 67 mn[i-k+1] = Q[l]; 68 } 69 } 70 71 void getMax() { 72 int l = 1, r = 0; 73 int i; 74 75 for (i=0; i<k-1; ++i) { 76 while (l<=r && Q[r]<=a[i]) 77 --r; 78 Q[++r] = a[i]; 79 P[r] = i; 80 } 81 82 for (; i<n; ++i) { 83 while (l<=r && Q[r]<=a[i]) 84 --r; 85 Q[++r] = a[i]; 86 P[r] = i; 87 while (P[l] < i-k+1) 88 ++l; 89 mx[i-k+1] = Q[l]; 90 } 91 } 92 93 void solve() { 94 getMin(); 95 getMax(); 96 rep(i, 0, n-k+1) { 97 if (i == n-k) 98 printf("%d\n", mn[i]); 99 else 100 printf("%d ", mn[i]); 101 } 102 rep(i, 0, n-k+1) { 103 if (i == n-k) 104 printf("%d\n", mx[i]); 105 else 106 printf("%d ", mx[i]); 107 } 108 } 109 110 int main() { 111 ios::sync_with_stdio(false); 112 #ifndef ONLINE_JUDGE 113 freopen("data.in", "r", stdin); 114 freopen("data.out", "w", stdout); 115 #endif 116 117 scanf("%d %d", &n, &k); 118 rep(i, 0, n) 119 scanf("%d", &a[i]); 120 solve(); 121 122 #ifndef ONLINE_JUDGE 123 printf("time = %d.\n", (int)clock()); 124 #endif 125 126 return 0; 127 }
转载于:https://www.cnblogs.com/bombe1013/p/5078783.html
【POJ】2823 Sliding Window相关推荐
- 【POJ】1067 取石子游戏(博弈论)
Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- 【POJ】2676-Sudoku 【51Nod】1211-数独(DFS)
[POJ]2676-Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25200 Accepted: 11782 Sp ...
- 【POJ】 1014 Dividing(多重背包,优化)
[POJ] 1014 Dividing(多重背包,优化) [题目链接]http://poj.org/problem?id=1014 题目 Description Marsha and Bill own ...
- 【POJ】1456 supermarket
[POJ]1456 supermarket 给定 n 件物品,第 i件物品有如下信息: 卖出去可以得到pi的收益. 过期时间为di ,过了过期时间就不能再卖出去. 卖掉一件物品要用 1 的时间,求最大 ...
- POJ 2823 Sliding Window
Sliding Window 链接:http://poj.org/problem?id=2823 Time Limit: 12000MS Memory Limit: 65536K Ca ...
- 【Siddhi】Siddhi的window操作
1.概述 fxjwind Siddhi CEP Window机制 https://docs.wso2.com/display/CEP400/SiddhiQL+Guide+3.0#SiddhiQLGui ...
- POJ 2823 Sliding Window(单调队列)
http://poj.org/problem?id=2823 题意: 给出数组和滑动窗口的大小,每次输出滑动窗口中的最大值和最小值. 思路: 这题可以算是单调队列的模板题了,分别维护单调递增和单调递减 ...
- POJ 2823 Sliding Window (单调队列)
单调队列 加了读入挂比不加更慢.... 而且这份代码要交c++ 有大神G++跑了700ms..... orzorzorz #include<iostream> #include<cs ...
- 【POJ】3268 Silver Cow Party (将有向图的边反转)
问题链接:http://poj.org/problem?id=3268 [问题描述] One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...
最新文章
- 2019 GDUT Rating Contest I : Problem H. Mixing Milk
- SQL SERVER2008 镜像
- Watershed函数
- 家用电器如何计算功率和消耗的度数
- 【写给朱大虫的教程】【Ruby on Rails】【006】遵循Rails理念的快速实现
- $.ajax 同步一不,ajax 同步不生效
- c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型
- Leetcode 210.课程表II
- ubuntu上常用的软件安装
- 【自学笔记】基于R语言的copula函数重现期等值线绘制
- 第2章第29节:英文排版技巧:无衬线字体和手写字体的搭配 [PowerPoint精美幻灯片实战教程]
- 3993: [SDOI2015]星际战争
- 2021年全球起酥油收入大约4171.6百万美元,预计2028年达到5052.7百万美元,2022至2028期间,年复合增长率CAGR为 2.8%
- 微信创建公众号菜单时出现48001,api unauthorized rid怎么解决?
- 深入理解机器学习——集成学习(Ensemble Learning):基础知识
- object标签属性详解
- Vim 批量在行首/行尾插入相同字符
- 企业为什么需要知识管理
- 微信人工客服电话号码是多少
- 期货开户手机APP有哪些?
热门文章
- 十分钟弄懂最快的APP自动化工具uiautomator2
- 性能测试很难吗?一文带你学会性能测试核心流程和概念
- 360怎么看电脑配置_怎么样查看电脑配置?5种方法查看电脑硬件配置好坏图文详解...
- 深圳爱思拓大数据 网站_建议收藏!13个大数据学习网站很少人知道!附大数据自学资料分享...
- 如何从文件名字符串中获取文件扩展名_Linux操作系统:文件系统的功能和命名...
- mosaic数据增强_YoloV4当中的Mosaic数据增强方法(附代码详细讲解)
- java email怎么设置端口号_java mail 设置参数
- 51单片机c语言显示hello,51单片机控制动态数码管显示12345和HELLO字样的设
- DE25 Homogeneous Linear Systems with Constant Coefficients
- php 赋予变量现在时间,PHP关于变量和日期处理的面试题