zoukankan      html  css  js  c++  java
  • HDU 1754 I Hate It

    (更新点查询区间)

    今天看了一下线段树方面的内容和例题,然后自己写了一个比较水的线段树题。。不过找错误找了好久,结果是把mid写成m了。。简直无语,写线段树绝对不能有小错误,很难找的。。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <cstdlib>
    using namespace std;
    #define N 200005
    
    struct node   //这里可以不用结构题,用一维数组就行了,节省空间。
    {
        int maxi;
    }tree[4*N];
    
    int a[N];
    int n,m;
    
    void build(int l,int r,int rt)
    {
        if(l==r)
        {
            tree[rt].maxi = a[l];
            return;
        }
        int mid = (l+r)/2;
        build(l,mid,2*rt);
        build(mid+1,r,2*rt+1);
        tree[rt].maxi = max(tree[2*rt].maxi,tree[2*rt+1].maxi);
    }
    
    void update(int l,int r,int aim,int val,int rt)
    {
        if(l==r)
        {
            tree[rt].maxi = val;
            return;
        }
        int mid = (l+r)/2;
        if(aim<=mid)
            update(l,mid,aim,val,2*rt);
        else
            update(mid+1,r,aim,val,2*rt+1);
        tree[rt].maxi = max(tree[2*rt].maxi,tree[2*rt+1].maxi);
    }
    
    int query(int l,int r,int aa,int bb,int rt)
    {
        if(aa>r||bb<l)
            return 0;
        if(aa<=l&&bb>=r)
            return tree[rt].maxi;
        int mid = (l+r)/2;
        return max(query(l,mid,aa,bb,2*rt),query(mid+1,r,aa,bb,2*rt+1));
    }
    
    int main()
    {
        int i,aim,val;
        int aa,bb;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            build(1,n,1);
            char ch;
            for(i=0;i<m;i++)
            {
                getchar();
                scanf("%c",&ch);
                if(ch == 'Q')
                {
                    scanf("%d%d",&aa,&bb);
                    int res = query(1,n,aa,bb,1);
                    cout<<res<<endl;
                }
                else
                {
                    scanf("%d%d",&aim,&val);
                    update(1,n,aim,val,1);
                }
            }
        }
        return 0;
    }
    View Code

    作者:whatbeg
    出处1:http://whatbeg.com/
    出处2:http://www.cnblogs.com/whatbeg/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    更多精彩文章抢先看?详见我的独立博客: whatbeg.com

  • 相关阅读:
    php自动保存文章内容中的图片
    javascript中字符串操作函数
    iis 301永久重定向图文教程
    ORA27101,ORA27102 错误解决方法
    IIS中启用Gzip压缩传输网页方法
    asp.net抓取163邮箱联系人实现代码
    windows IIS 日志文件如何查看及分析
    输出页面所有HTML 包括 JS 添加 的内容
    VS2005无法启动调试 及 解决办法
    Json转行DataTable
  • 原文地址:https://www.cnblogs.com/whatbeg/p/3485587.html
Copyright © 2011-2022 走看看