zoukankan      html  css  js  c++  java
  • BZOJ 1012 最大数

    这个?乱入线段树。我写的还特别暴力结果还是过了。。。。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #define maxn 1000050
    using namespace std;
    long long ls[maxn],rs[maxn],value[maxn];
    long long m,d,last=0,n,rec=0,tot=0,root=0;
    char type[5];
    long long build(long long left,long long right)
    {
    long long now=++tot;
    if (left==right)
    return now;
    long long mid=(left+right)>>1;
    ls[now]=build(left,mid);
    rs[now]=build(mid+1,right);
    return now;
    }
    void single_modify(long long now,long long left,long long right,long long pos,long long x)
    {
    if ((left==pos) && (left==right))
    {
    value[now]=x;
    return;
    }
    long long mid=(left+right)>>1;
    if (pos<=mid) single_modify(ls[now],left,mid,pos,x);
    else single_modify(rs[now],mid+1,right,pos,x);
    value[now]=max(value[ls[now]],value[rs[now]]);
    }
    long long ask(long long now,long long left,long long right,long long l,long long r)
    {
    if ((left==l) && (right==r))
    return value[now];
    long long mid=(left+right)>>1;
    if (r<=mid) return ask(ls[now],left,mid,l,r);
    else if (l>=mid+1) return ask(rs[now],mid+1,right,l,r);
    else return max(ask(ls[now],left,mid,l,mid),ask(rs[now],mid+1,right,mid+1,r));
    }
    int main()
    {
    scanf("%lld%lld",&m,&d);
    root=build(1,m);
    for (long long i=1;i<=m;i++)
    {
    scanf("%s %d",type,&n);
    if (type[0]=='Q')
    {
    last=ask(root,1,m,rec-n+1,rec);
    printf("%lld ",last);
    }
    else
    {
    n=(n+last)%d;rec++;
    single_modify(root,1,m,rec,n);
    }
    }
    return 0;
    }

  • 相关阅读:
    第五篇
    第四篇
    PAT Basic 1094 谷歌的招聘 (20 分)
    PAT Basic 1093 字符串A+B (20 分)
    Dubbo 04 服务化最佳实现流程
    Dubbo 03 Restful风格的API
    Dubbo 02 微信开发
    Dubble 01 架构模型&start project
    PAT Basic 1020 月饼 (25 分)
    PAT Basic 1019 数字黑洞 (20 分)
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5202992.html
Copyright © 2011-2022 走看看