zoukankan      html  css  js  c++  java
  • 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
    
    
  • 相关阅读:
    [转]创建节约内存的JavaBean
    TCP协议
    redis常用命令
    Windows&Linux常用命令笔记
    二叉树学习笔记
    云计算入门
    redis主从切换
    spring 异步处理request
    ibatis工作原理
    工作了3年的JAVA程序员应该具备什么技能?(转)
  • 原文地址:https://www.cnblogs.com/Judge/p/11692315.html
Copyright © 2011-2022 走看看