首页 > 代码库 > 树状数组模板
树状数组模板
看了很多讲解仍然不明就里,感觉反正代码很短,暂时当模板背过好了。
//树状数组 单点修改 区间查询 const int maxn=1005; int tree[maxn],n; void init() { for (int i=1;i<=n;i++) tree[i]=0; } //初始化一个长度为n的树状数组,n为全局变量 int lowbit(it k) { return k&-k; } void add(int k,int x) //给位置k加x { while (k<=n) { tree[k]+=x; k+=lowbit(k); } } int querysum(int k) //查询[1,k]的前缀和 { int sum=0; while (k>0) { sum+=tree[k]; k-=lowbit(k); } return sum; } void setvalue(int k,int x) //把位置k置为x { int t=query(k)-query(k-1); add(k,-t); add(k,x); }
树状数组模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。