二维树状数组

单点修改,子矩阵查询。

void add(int x,int y,int v){
	for(;x<=n;x+=x&-x)
		for(int i=y;i<=m;i+=i&-i)
			c[x][i]+=v;//c[x][i]=max/min(c[x][i],v);
}
int sum(int x,int y){
	int res=0;
	for(;x;x-=x&-x)
		for(int i=y;i;i-=i&-i)
			res+=c[x][i];//res=max/min(res,c[x][i]);
	return res;
}

发现只是把一重循环改成两重就好。

至于原因,分析难,反正背下来就好。

posted @ 2024-08-16 16:58  wscqwq  阅读(4)  评论(0编辑  收藏  举报