jsoi2008最大数bzoj1012

来源:互联网 发布:mysql数据库备份还原 编辑:程序博客网 时间:2024/05/18 00:08
题意就是维护一个队列,支持查询最近插入的L个数里面的最大值和插入,所以我们可以使用单调栈,单调队列之类的写,线段树平衡树当然可以只不过我们需要在比赛中尽量的节省时间,当然平常我们也可以练习一下,线段树很直观,直接做,平衡树加入一个插入标记,把查询L个数中最早插入的splay树根,最近的splay到右子树然后似乎就可以做了?有时间写一发试下啊咧《这莫非又是坑?
#include<cstdio>#include<algorithm>using namespace std;int a[200005],top,b[200005],ans,inf;int n,flag;int main(){        scanf("%d%d",&n,&inf);        for (int i=1;i<=n;i++)        {                char op[1];int x;                scanf("%s %d",op,&x);                if (op[0]=='A')                {                        x+=ans;                        x%=inf;                        b[++b[0]]=x;                        while (top&&b[a[top]]<=x) top--;                        a[++top]=b[0];                }                else                {                        int t=lower_bound(a+1,a+top+1,b[0]-x+1)-a;                        ans=b[a[t]];                        printf("%d\n",ans);                }        }        return 0;}

0 0
原创粉丝点击