题解 | #【模板】线段树1#(Python3)

【模板】线段树1

https://www.nowcoder.com/practice/e767b7b441ce4345aad1fac0a3633afb

N = 100100
tr = [0] * N
def lowbit(x):
    # x&-x可以取到最右边的1
    return x&-x
# 添加固定写法
def add(now, val):
    i = now
    while(i<N):
        tr[i] += val
        i += lowbit(i)
# 查询固定写法
def query(now):
    res = 0
    i = now
    while(i>0):
        res += tr[i]
        i -= lowbit(i)
    return res

n, q = map(int, input().split())
a = [0]
a.extend(list(map(int, input().split())))
for i in range(1, n+1):
    add(i, a[i])
for _ in range(0, q):
    p, x, y = map(int, input().split())
    if(p==1):
        # 修改:把原来的值抹掉,再加上新值
        add(x, -a[x])
        # 根据题目
        a[x] += y
        add(x, a[x])
    else:
        print(query(y)-query(x-1))

#15天刷题#
全部评论

相关推荐

丿南烟丶:黑白模板吧,不要这样花哨的。 主要成就太空了,和获奖融在一起,写一两行就行了。 职业技能不要这样排,就传统的掌握精通什么什么然后举例补充的一些重要技术点。 自我介绍说实话也没啥用,可以删了。 把自己的两个项目方案细节补充上去,为什么这样设计,怎么设计,成果是什么按star法则来写 你要引导面试官来问你的技能和项目,你的获奖和自我介绍别人可能看都不看一眼或者不太在乎,重要的是展示你能干活的能力
点赞 评论 收藏
分享
牛牛不会牛泪:脉脉太多这种了,纯水军
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务