树状数组
HumveeA6
这个作者很懒,什么都没留下…
展开
-
(模板)树状数组 (单点更新,区间求和)
小心爆int,注意位运算的方式即可; int bit[500005],n,m; typedef long long ll; ll sum(int i) { ll s=0; while(i){ s+=bit[i]; i-=i&-i; } return s; } void add(int i,int x) { whi...原创 2018-03-13 17:19:35 · 373 阅读 · 0 评论 -
(模板)树状数组 (区间修改,单点查询)
引入一个叫做查分数组的东西,感觉思想有点像lazytab。区间[l,r]所有值+k改成”位置l加上k,位置r+1减去k” 查询的时候直接查询sum(x)就行;(参考题目:洛谷P3386) #include<cstdio> #include<iostream> using namespace std; typedef long long ll; const int max...原创 2018-03-13 18:07:00 · 147 阅读 · 0 评论 -
二维树状数组(模板,单点更新区间求和)
updata:在(x,y)处加上v query:区间(0,0)到(x,y)的所有数之和 sum:容斥原理求区间所有数之和,(x,y)左上角,(xx,yy)右下角。坐标是从左往右,从上往下增大。 int N; int c[maxn][maxn]; inline int lowbit(int t) { return t&(-t); } void update(int x,int ...原创 2018-06-03 17:36:10 · 359 阅读 · 0 评论