bzoj 1012 [JSOI2008]最大数maxnumber
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj 1012 [JSOI2008]最大数maxnumber相关的知识,希望对你有一定的参考价值。
维护单调栈,每次加一个数之前,把栈顶不大于它的数弹出。
查询时二分就可以了。
#include<cstdio> #include<algorithm> using namespace std; int s[200001],t=0; int a[200001],siz=0; int n,clz,x,las; int main(){ char op[5]; scanf("%d%d",&n,&clz); for(int i=1;i<=n;i++){ scanf("%s%d",op,&x); if(op[0]==‘A‘){ x=(x+las)%clz; a[++siz]=x; while(t&&a[s[t]]<=x) t--; s[++t]=siz; } else{ printf("%d\n",las=a[s[lower_bound(s+1,s+t+1,siz-x+1)-s]]); } } }
以上是关于bzoj 1012 [JSOI2008]最大数maxnumber的主要内容,如果未能解决你的问题,请参考以下文章
bzoj1012[JSOI2008]最大数maxnumber
BZOJ 1012: [JSOI2008]最大数maxnumber
BZOJ1012: [JSOI2008]最大数maxnumber [线段树]