标签:
单调栈
int rear=0; for(int st=1;st<=N;st++) { while(rear>0&&H[que[rear]]>=H[st]) --rear; if(rear==0) le[st]=0; else le[st]=que[rear]; que[++rear]=st; }
单调队列
int que[maxn],elem[maxn]; int front=1,rear=0; for(int i=1;i<K;i++) { while(rear>=front&&elem[que[rear]]>=elem[i]) --rear; que[++rear]=i; } for(int i=K;i<=N;i++) { while(rear>=front&&elem[que[rear]]>=elem[i]) --rear; que[++rear]=i; while(que[front]+K<=i) ++front; MIN[i-K]=elem[que[front]]; }
标签:
原文地址:http://www.cnblogs.com/wust-ouyangli/p/5798144.html