【数据结构】[luoguP1886]滑动窗口

题目

接近于单调队列的模板了 根据大小之类的入队出队 代码好理解
代码如下

#include<iostream> #include<cstdio> #include<cctype> using namespace std; #define in = read() typedef long long ll; const ll size = 1000000 + 1000; ll n,k; ll a[size]; ll h,t; ll q[size],p[size]; inline ll read(){ ll num = 0,f = 1; char ch = getchar(); while (!isdigit(ch)){ if(ch == '-') f = -1; ch = getchar(); } while (isdigit(ch)){ num = num*10 + ch - '0'; ch = getchar(); } return num*f; } inline void maxx(){ h = 1; t = 0; for (int i=1;i<=n;i++){ while (h <= t && q[t] <= a[i]) t --; q[++ t] = a[i]; p[t] = i; while (p[h] <= i - k) h ++; if(i >= k) printf("%d ",q[h]); } printf("\n"); } inline void minn(){ h =1; t = 0; for (int i=1;i<=n;i++){ while (h <= t && q[t] >= a[i]) t --; q[++ t] = a[i]; p[t] = i; while(p[h] <= i - k) h ++; if(i >= k) printf("%d ",q[h]); } printf("\n"); } int main(){ n in; k in; for (int i=1;i<=n;i++) a[i] in; minn(); maxx(); } //COYG 

相关文章

【啊哈!算法】算法3:最常用的排序——快速排序       ...
匿名组 这里可能用到几个不同的分组构造。通过括号内围绕的正...
选择排序:从数组的起始位置处开始,把第一个元素与数组中其...
public struct Pqitem { public int priority; ...
在编写正则表达式的时候,经常会向要向正则表达式添加数量型...
来自:http://blog.csdn.net/morewindows/article/details/6...