标签:rqnoj 单调栈 单调队列 诺诺的队列 高级数据结构
【题目大意】单调栈代码:
#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; const int N=500001; struct Stack { int w,c; }stk[N]; int size; int n,w[N],cnt; inline int read(void) { int s=0,f=1; char c=getchar(); for (;c<'0'||c>'9';c=getchar()) if (c=='-') f=-1; for (;'0'<=c&&c<='9';c=getchar()) s=(s<<1)+(s<<3)+c-'0'; return s*f; } int main(void) { n=read(); for (int i=1;i<=n;i++) w[i]=read(); for (int i=1;i<=n;i++) { for (;size&&stk[size].w<w[i];size--) { cnt+=stk[size].c; stk[size].w=stk[size].c=0; } if (size&&stk[size].w==w[i]) { cnt+=stk[size].c; stk[size].c++; if (size-1) cnt++; } else { if (size) cnt++; stk[++size].w=w[i]; stk[size].c=1; } } printf("%d\n",cnt); return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:rqnoj 单调栈 单调队列 诺诺的队列 高级数据结构
原文地址:http://blog.csdn.net/u013598409/article/details/46766019