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

posted @ 2019-10-17 15:25  Jμdge  阅读(176)  评论(0编辑  收藏  举报