BZOJ 1012 [JSOI2008]最大数maxnumber

Posted Achen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1012 [JSOI2008]最大数maxnumber相关的知识,希望对你有一定的参考价值。

看到题的第一眼,我问LLJ大佬,这是不是主席树模板题呀,然后被大佬无情地嘲笑了。

又思考了一下,感觉树套树可做,我大概是傻了吧。

LLJ说,题解是单调队列啊。

我觉得他说的十分有道理。

裸的单调队列。

技术分享
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
typedef long long LL;
using namespace std;
const int maxn=200000+299;
int m,mod,t,x,que[maxn],val[maxn],tot,now;
char op[5];
int ef(int l,int r,int x) {
    int res=0;
    while(l<=r) {
        int mid=(l+r)>>1;
        if(que[mid]>=now-x+1)  {
            res=val[que[mid]];
            r=mid-1;}
        else l=mid+1;
    }
    return res;
}
int main()
{
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    scanf("%d%d",&m,&mod);
    while(m--) {
        scanf("%s%d",&op,&x);
        if(op[0]==A) {
            x=(x+t)%mod;  now++;
            while(tot&&val[que[tot]]<=x) {
                tot--;
             }
             que[++tot]=now;
            val[now]=x;
        }
        else {
           t=ef(1,tot,x);
           printf("%d\n",t);
        }
    } 
    return 0;
}
View Code

 

以上是关于BZOJ 1012 [JSOI2008]最大数maxnumber的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1012[JSOI2008]最大数maxnumber

BZOJ 1012: [JSOI2008]最大数maxnumber

BZOJ1012: [JSOI2008]最大数maxnumber [线段树]

单调栈 BZOJ1012 [JSOI2008]最大数maxnumber

BZOJ1012:[JSOI2008]最大数——题解

BZOJ 1012 [JSOI2008]最大数maxnumber