问什么题目叫做正解算法
```cpp
void Update (int x,int y,int v,int k) {
for (register int i=x;i<=n;i+=Lowbit (i))
for (register int j=y;j<=m;j+=lowbit (j)) //lowbit是那个位运算函数,忘了咋写了。。。。
f[i][j][v]+=k;
return;
}
int Getans (int x,int y,int v) {
int ans=0;
for (register int i=x;i>0;i-=Lowbit (i))
for (register int j=y;j>0;j-=Lowbit (j))
ans+=f[i][j][v];
return ans;
}
```
区间试试???
by PassName @ 2022-01-25 17:59:14
@[kkk的忠实粉丝](/user/482730) 要用二维的树状数组,你这样单次问询最差是 $\mathcal O(\max(n,m)\log \max(n,m))$ 的,常数大的话可能过不了。
by Petit_Souris @ 2022-01-25 22:04:36
@[单南松](/user/524911) LSB(i)=i&(-i)
by aSunnyDay @ 2022-01-26 10:51:42
@[Petit_Souris](/user/288866) 所以说一般来说是二维数状数组比一维块是么。
OI可真是一门玄学的学科
by aSunnyDay @ 2022-01-26 10:52:46
@[kkk的忠实粉丝](/user/482730) 二维的是 $\log^2$,肯定比 $n\log $ 要快啊
by Petit_Souris @ 2022-01-26 11:29:29
@[kkk的忠实粉丝](/user/482730) 你这样写相当于 每种颜色开 $n$ 个树状数组。
by Petit_Souris @ 2022-01-26 12:00:14
@[Petit_Souris](/user/288866) 有道理啊
谢谢大佬
by aSunnyDay @ 2022-01-26 12:05:08