单调栈与单调队列
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
单调栈与单调队列
单调栈可以方便(O(n))地求出一个数,左右第一个比它大/小的数的位置如何求----给一个序列 2,3,6,9,4,7,1我们先求左边第一个比它小的栈为空,a[S.top()]<a[1] 所以 l[1]=0,S.push(1)单调栈里存的是编号接下来a[S.top()]<a[2] 所以l[2]=S.top=1, S.push(1)同理但是到4的时候...原创 2018-08-19 17:48:50 · 226 阅读 · 0 评论 -
City Game[单调栈]
传送门记录可以最高到哪里 , 左右到哪里 , 然后更新答案#include<cstdio>#include<stack>#include<cstring>#define N 1050using namespace std;int k,h[N],l[N],r[N],n,m,ans;void Calc(){ stack<int> ...原创 2018-11-25 17:11:04 · 250 阅读 · 0 评论 -
花盆[二分答案+单调队列]
传送门题意: 求最小的l , r 使区间极差大于d二分出一个长度 , 单调队列维护一个最大,一个最小#include<bits/stdc++.h>#define N 1000050using namespace std;struct Node{int x,y;}a[N];int q1[N],q2[N],n,d;bool cmp(Node a,Node b){re...原创 2018-11-25 15:02:12 · 244 阅读 · 0 评论 -
滑动窗口[单调队列]
传送门单调队列维护最小最大就可以了#include<bits/stdc++.h>#define N 1000050using namespace std;int Max[N],Min[N],ans1[N],ans2[N];int n,k,l1=1,l2=1,r1,r2,x[N];int main(){ scanf("%d%d",&n,&k); f...原创 2018-11-28 20:14:50 · 175 阅读 · 0 评论 -
P2659 美丽的序列 [单调栈]
传送门水题#include<bits/stdc++.h>#define N 2000050#define LL long longusing namespace std;int n,a[N],l[N],r[N],sta[N],top; LL ans;int read(){ int cnt=0;char ch=0; while(!isdigit(ch))ch=ge...原创 2018-12-12 20:57:39 · 287 阅读 · 0 评论