动态开点线段树灵异事件
  • 板块学术版
  • 楼主npqenqpve
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/8/31 20:50
  • 上次更新2023/10/27 12:56:06
查看原帖
动态开点线段树灵异事件
413777
npqenqpve楼主2022/8/31 20:50

这是一份不怎么特殊的动态开点线段树代码,唯一的不同是我需要给好多棵动态开点线段树分配空间,因此我选择了 vector,然而我进行了一次普通的单点加操作,导致了RE,发现了是在第二层递归时新开的点 uu 变成了随机值(?,但是不知道为啥,求教


vector<int>t[(int)(1e5+10)],l[(int)(1e5+10)],r[(int)(1e5+10)];
int root[(int)(1e5+10)];
void add(int id,int &u,int st,int ed,int x,int k)
{
	cout<<u<<"\n";
	if(!u)
	{
		u=++root[id];
		t[id].push_back(0);
		l[id].push_back(0);
		r[id].push_back(0);
      cout<<u<<"\n";
	}
	if(st==ed)
	{
		t[id][u]+=k;
		return ;
	}
	int mid=(st+ed)>>1;cout<<u<<"\n";
	// cout<<l[id][u]<<" "<<r[id][u]<<"\n";
	if(mid>=x) add(id,l[id][u],st,mid,x,k);
	else add(id,r[id][u],mid+1,ed,x,k);
	cout<<l[id][u];
	t[id][u]=t[id][l[id][u]]+t[id][r[id][u]];
}
2022/8/31 20:50
加载中...