PY个树状数组
树状数组看起来比较简单,于是就挑它下手了...
于是生活终于也对咱下手了...
要讲的就两个东西,一个是开数组,全局变量写最前面,数组是这么开的: f=[0 for i in range(500005)]
另外一个就是 注意 split()
还有一句就是咱发现 python 对输入数据格式的要求真的是肥肠严格的,如果某 oj (特指某 hdu)上的题目数据出锅的话,py 可能会出现各种奇妙的问题【雾
这给咱的启示就是: 平时搞 OI 少 PY ,对心理 和身体 都不好
Code
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