• 线段树 洛谷 p1531 I hate it(I hate it too)


    这里写链接内容
    线段树模板
    字符串是一个很诡异的问题。。。。

    #include<cstdio>
    #include<iostream>
    #include<string>
    #define q 200000
    using namespace std;
    int a[q+5],s[q<<2+5];
    void bu(int o,int l,int r)//建树
    {
        if(l==r)
        {
            s[o]=a[r];
        } else{
            int mid=l+((r-l)>>1);
        bu(o<<1,l,mid);
        bu((o<<1)|1,mid+1,r);
        s[o]=max(s[o<<1],s[(o<<1)|1]);
        }
    
    }
    void up(int o,int l,int r,int in,int ans)//修改
    {
        if(l==r)
        {
            s[o]=ans;
            return;
        }
        int mid=l+((r-l)>>1);
        if(in<=mid)
        up(o<<1,l,mid,in,ans);
        else
        up((o<<1)|1,mid+1,r,in,ans);
        s[o]=max(s[o<<1],s[(o<<1)|1]);
    
    }
    int qu(int o,int l,int r,int ql,int qr)//查询输出
    {
        if(r<ql||l>qr) return -9999;
        if(ql<=l&&qr>=r)
        {
            return s[o];
        }
        int mid=l+((r-l)>>1);
        return max(qu(o<<1,l,mid,ql,qr),qu((o<<1)|1,mid+1,r,ql,qr));
    }
     int main()
     {
        //freopen("线段树.in","r",stdin);
        //freopen("线段树.out","w",stdout);
        int n;int m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        //getchar();
        bu(1,1,n+1);
        for(int i=1;i<=m;i++) 
         {
            //char b;
            string b;
            int c,d;
             //b=getchar();
             cin>>b;
            scanf("%d%d",&c,&d);
             // getchar();
            if(b=="Q") 
            {
             printf("%d
    ",qu(1,1,n+1,c,d));    
            }
            if(b=="U") 
             {
                if(a[c]<d)
                {
                    a[c]=d;
                    up(1,1,n+1,c,d);
    
                }
    
             }
         }
    
         return 0;
     }
  • 相关阅读:
    怎么为学生布置作业
    新学期的第一节Android课
    RUCSE小组博客列表
    test
    个人最终总结
    黄金点小游戏的设计与实现
    WordCount 程序的实现
    阅读下面程序,请回答如下问题:
    Visual Studio 2015的安装和简单的单元测试
    构建之法--软件工程学习随笔之二
  • 原文地址:https://www.cnblogs.com/wspl98765/p/6819903.html
Copyright © 2020-2023  润新知