第一篇部落格,就記一下十分優美的樹狀陣列模板吧。
#includeint n,t,a[1001],c[1001樹狀陣列];int lowbit(int
bin)
void add(int x,int
y)int getsum(int
x)int
main()
return0;
}
還有差分樹狀陣列。
#includeint差分樹狀陣列n,m;
int arr[500005],dif[500005],tree[500005
];int lowbit(int
k)void add(int k,int
x)
return;}
int getarr(int
k)
return
ans;
}int
read()
while(c>='
0'&&c<='9'
)
return x*w;
}int
main()
while(m--)
if(x==2
) }
return0;
}
還有我用py寫的樹狀陣列,不過放到洛谷上t了,情理之中的事。
#樹狀陣列(py)-*- coding: utf-8 -*-
tree=
a=n=0
m=0def
read_int():
"""讀入整數
"""s=input()
lst=s.split('')
return
lst
defadd(x,t):
global
tree
while x<=n:
tree[x]+=t
x+=(x&(-x))
defget(x):
ans=0
while x>0:
ans+=tree[x]
x-=(x&(-x))
return
ansif
__name__=="""
__main__
""":
a=read_int()
n=int(a[0])
m=int(a[1])
a=read_int()
i=0while i<=n:
i+=1i=0
while i
add(i+1,int(a[i]))
i+=1
while m>0:
a=read_int()
if int(a[0])==1:
add(int(a[1]),int(a[2]))
elif int(a[0])==2:
print(get(int(a[2]))-get(int(a[1])-1))
m-=1
就這樣了。
樹狀陣列模板
假設有一列數 1 i n 支援如下兩種操作 1.將ai的值加d。2.輸出ai ai 1 aj 1 i j n 樹狀陣列是一種特殊的資料結構,這種資料結構的時空複雜度和線段樹相似,但是它的係數要小得多 hdu 1166 敵兵布陣 題目 a國在海岸線沿直線布置了n個工兵營地。由於採取了某種先進的監測手段...
樹狀陣列模板
已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的和 這種水水的樹狀陣列,博主就不做介紹,直接上 希望大家可以多多捧場!include include include include include include include include include ...
樹狀陣列模板
樹狀陣列 binary indexed tree bit fenwick tree 是乙個查詢和修改複雜度都為log n 的資料結構。主要用於查詢任意兩位之間的所有元素之和,但是每次只能修改乙個元素的值 經過簡單修改可以在log n 的複雜度下進行範圍修改,但是這時只能查詢其中乙個元素的值。一,改點...