已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=1x∑j=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*y 、val*x 、val*y 而不是 val*i*j 、val*i 、val*j ?

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