zoukankan      html  css  js  c++  java
  • 主席树模板之历史版本

    P3919 【模板】可持久化线段树 1(可持久化数组)

     

     AC_Code:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int maxn=1e6+10;
     5 const int mod=1e9+9;
     6 
     7 struct Tree{
     8     int l,r,v;
     9 }tree[maxn*40];
    10 
    11 int root[maxn],tot;
    12 int n,m;
    13 
    14 int build(int l,int r){
    15     int p=++tot;
    16     if( l==r ){
    17         scanf("%d",&tree[p].v);
    18         return p;
    19     }
    20     int mid=(l+r)>>1;
    21     tree[p].l=build(l,mid); tree[p].r=build(mid+1,r);
    22     tree[p].v=tree[tree[p].l].v+tree[tree[p].r].v;
    23     return p;
    24 }
    25 
    26 int query(int p,int l,int r,int loc){
    27     if( l==r ) return tree[p].v;
    28     int mid=(l+r)>>1;
    29     if( loc<=mid ) return query(tree[p].l,l,mid,loc);
    30     else return query(tree[p].r,mid+1,r,loc);
    31 }
    32 
    33 int update(int now,int l,int r,int x,int value){
    34     int p=++tot;
    35     tree[p]=tree[now];
    36     if( l==r ){
    37         tree[p].v=value;
    38         return p;
    39     }
    40     int mid=(l+r)>>1;
    41     if( x<=mid )
    42         tree[p].l=update(tree[now].l,l,mid,x,value);
    43     else
    44         tree[p].r=update(tree[now].r,mid+1,r,x,value);
    45     tree[p].v=tree[tree[p].l].v+tree[tree[p].r].v;
    46     return p;
    47 }
    48 
    49 int main()
    50 {
    51     scanf("%d%d",&n,&m);
    52     root[0]=build(1,n);
    53     for(int i=1;i<=m;i++){
    54         int v,p,loc,value;
    55         scanf("%d%d%d",&v,&p,&loc);
    56         if( p==1 ){
    57             scanf("%d",&value);
    58             root[i]=update(root[v],1,n,loc,value);
    59         }
    60         else{
    61             printf("%d
    ",query(root[v],1,n,loc));
    62             root[i]=root[v];
    63         }
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    。Java中的一些小细节
    。标识符命名规则
    。tar.gz(bz或bz2等)安装
    。U盘安装CentOS6.5
    。linux桌面与命令行
    。鸟哥私房菜
    。i节点
    UGUI- 单列列表(VerticalLayoutGroup)
    PhotonServer(3)-连接服务器-客户端
    PhotonServer(2)-配置
  • 原文地址:https://www.cnblogs.com/wsy107316/p/13362490.html
Copyright © 2011-2022 走看看