PY個樹狀陣列

2022-02-28 11:08:10 字數 908 閱讀 5369

樹狀陣列看起來比較簡單,於是就挑它下手了...

於是生活終於也對咱下手了...

要講的就兩個東西,乙個是開陣列,全域性變數寫最前面,陣列是這麼開的: f=[0 for i in range(500005)]

另外乙個就是 注意 split()

還有一句就是咱發現 python 對輸入資料格式的要求真的是肥腸嚴格的,如果某 oj (特指某 hdu)上的題目資料出鍋的話,py 可能會出現各種奇妙的問題【霧

這給咱的啟示就是: 平時搞 oi 少 py ,對心理 和身體 都不好

f=[0 for i in range(500005)]

def lowbit(x):

return x&(-x)

def add(x, n, k):

while x<=n :

f[x]+=k

x+=lowbit(x)

def ask(x):

res=0

while x>0:

res+=f[x]

x-=lowbit(x)

return res

s=input().split()

n=int(s[0])

m=int(s[1])

s=input().split()

for i in range(1,n+1):

add(i, n, int(s[i-1]))

while m>0:

s=input().split()

op=int(s[0])

x=int(s[1])

y=int(s[2])

if op==1:

add(x, n, y)

else:

print(ask(y)-ask(x-1))

m=m-1

樹狀陣列1 樹狀陣列入門

仔細看一下,發現tree的每乙個節點的高度並不是隨意的,而是由它轉成二進位制之後末尾連續零的數量決定的,連續零的數量加1,就是高度,例如 3 11 零的數量為0,加1等於1,所以它的高度就是1 6 110 零的數量為1,加1等於2,所以它的高度就是2 8 1000 零的數量為3,加1等於4,所以它的...

樹狀陣列 瞎bb 樹狀陣列

樹狀陣列是乙個利用一維陣列和位運算組成的求解區間問題的高效資料結構,其構造如圖所示 首先,我們要用它解決單點修改 區間查詢的操作。根據這張圖我們建立乙個陣列bit,下標就是圖中顯示的十進位制數。bit i 就表示了圖中所示的一段區間的和,例如bit 6 sum 5,6 bit 4 sum 1,4 下...

樹狀陣列 二維樹狀陣列模板

樹狀陣列模板 int lowbit int x int add int x,int val int que int x 模板題 題解 include include include using namespace std int c 300000 rank 300000 int n int lowb...