zoukankan      html  css  js  c++  java
  • codevs1081 线段树练习 2

    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #define inf 100000000
    using namespace std;
    const int maxn=100000+10;
    int n,a[maxn],q;
    struct Tree
    {
      int val,mark;
    }tree[maxn*3];
    void build(int root,int arr[],int istart,int iend)
    {
      if(istart==iend)
      {
        tree[root].val=arr[istart];
        return;    
      }
      int mid=(istart+iend)>>1;
      build(root<<1,arr,istart,mid);
      build(root<<1|1,arr,mid+1,iend);
      return;
    }
    void pushdown(int root)
    {
      if(tree[root].mark)
      {
          tree[root<<1].val+=tree[root].mark;
          tree[root<<1|1].val+=tree[root].mark;
          tree[root<<1].mark+=tree[root].mark;
          tree[root<<1|1].mark+=tree[root].mark;
          tree[root].mark=0;
      }
      return;
    }
    void updata(int root,int ul,int ur,int nl,int nr,int val)
    {
      if(ul>nr||ur<nl)return;
      if(nl>=ul&&nr<=ur)
      {
          tree[root].val+=val;
        tree[root].mark+=val;
          return;
      }
      pushdown(root);
      int mid=(nl+nr)>>1;
      updata(root<<1,ul,ur,nl,mid,val);
      updata(root<<1|1,ul,ur,mid+1,nr,val);
    }
    int query(int root,int ql,int qr,int nl,int nr)
    {
      if(ql>nr||qr<nl)return inf;
      if(nl>=ql&&nr<=qr)return tree[root].val;
      pushdown(root);
      int mid=(nl+nr)>>1;
      return min(query(root<<1,ql,qr,nl,mid),query(root<<1|1,ql,qr,mid+1,nr));
    }
    int main()
    {
      scanf("%d",&n);
      for(int i=1;i<=n;i++)scanf("%d",&a[i]);
      build(1,a,1,n);
      scanf("%d",&q);
      int a,b,x,t;
      for(int i=1;i<=q;i++)
      {
          scanf("%d",&t);
          if(t==1)
          {
          scanf("%d%d%d",&a,&b,&t);
          updata(1,a,b,1,n,t);
        }
        else
        {
          scanf("%d",&a);
          printf("%d
    ",query(1,a,a,1,n));
        }
      }
      return 0;
    }
    View Code
  • 相关阅读:
    TCP/IP协议学习-1.概述
    Gitlab与Sonarqube整合-代码提交自动检测
    Kubernetes-4.Pods
    Kubernetes-3.安装
    Kubernetes-2.组件
    Kubernetes-1.概述
    第200题 数列极限积分
    English
    亮总语录
    RadioButton Control
  • 原文地址:https://www.cnblogs.com/new-hand/p/7745511.html
Copyright © 2011-2022 走看看