已AC,不理解
查看原帖
已AC,不理解
427154
unsigned_short_int楼主2022/8/5 16:25

第一,为什么修改操作是这样的?

void add(int x,int y,int val)
{
	for(int i=x;i<=n;i+=lowbit(i))
		for(int j=y;j<=m;j+=lowbit(j))
		{
			tr[0][i][j]+=val;
			tr[1][i][j]+=val*y;
			tr[2][i][j]+=val*x;
			tr[3][i][j]+=val*x*y;
		}
}

我推出来的询问操作式子是:(s是差分数组)

i=1xj=1y [(xy+x+y+1)si,j(x+1)j×si,j(y+1)i×si,j+i×j×si,j]\sum_{i=1}^x\sum_{j=1}^y\ [(xy+x+y+1)s_{i,j}-(x+1)j\times s_{i,j}-(y+1)i\times s_{i,j}+i\times j\times s_{i,j}]

那么修改时为什么用的是 val*x*yval*xval*y 而不是 val*i*jval*ival*j

2022/8/5 16:25
加载中...