为什么预处理后在线算法需要使用可持久化?
  • 板块CF208E Blood Cousins
  • 楼主xxmb
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/23 07:55
  • 上次更新2024/8/23 11:01:51
查看原帖
为什么预处理后在线算法需要使用可持久化?
818000
xxmb楼主2024/8/23 07:55

我参考的是这篇题解,蒟蒻弄不明白为什么要使用可持久化啊???

我的原代码:

int update(int x,int y,int l,int r){
	if(!x)
		return y;
	if(!y)
		return x;
	if(l==r){
		mp[x].sum+=mp[y].sum;
		return x;
	}
	int mid=l+r>>1;
	mp[x].l=update(mp[x].l,mp[y].l,l,mid);
	mp[x].r=update(mp[x].r,mp[y].r,mid+1,r);
	mp[x].sum=mp[mp[x].l].sum+mp[mp[x].r].sum;
	return x;
}

使用可持久化的代码:

int update(int x,int y,int l,int r){
	if(!x)
		return y;
	if(!y)
		return x;
	int mid=l+r>>1;
	int pp=++cnt;
	mp[pp].sum=mp[x].sum+mp[y].sum;
	mp[pp].l=update(mp[x].l,mp[y].l,l,mid);
	mp[pp].r=update(mp[x].r,mp[y].r,mid+1,r);
	return pp;
}
2024/8/23 07:55
加载中...