萌新刚学线段树(bu,想问如果用树状数组做的话,修改该怎么解释
查看原帖
萌新刚学线段树(bu,想问如果用树状数组做的话,修改该怎么解释
248899
Afexipt楼主2020/11/6 09:34

修改中好像只加了(l1)k(l-1)*k,然后减去了rkr*k,就没了,可是正常来讲,不是每个数各自的位置-1再与k相乘吗?

void in(int x,int val)
{
	for(int i=x;i<=n;i+=(i&(-i)))  tr1[i]+=val,tr2[i]+=(x-1)*val;
}
int main()
{
	for(int i=1;i<=q;i++)
	{
		int opt=read(),l=read(),r=read(),x;
		if(opt==1)  x=read(),in(l,x),in(r+1,-x);
	}
}

我很好奇。

2020/11/6 09:34
加载中...