求助Splay无法动态扩容(即炸空间、电脑)
  • 板块学术版
  • 楼主Math_rad_round
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/12/26 20:20
  • 上次更新2023/10/28 13:32:07
查看原帖
求助Splay无法动态扩容(即炸空间、电脑)
211538
Math_rad_round楼主2021/12/26 20:20

RT,初始化函数:

void init(int a){
	if(a<10)a=10;
	t.resize(a+3);//存splay的数组
}

插入点的时候

void insert(int &w,int fa,int op){
  ......
  //以下是开始插入这个新点时
  w=++wei
  if(t.size()<=wei+2)t.resize(wei+5);//wei是最后一个数插入的位置。
  ......
}

然而无论什么时候,只有最开始的 init()init() 能用来初始化,

如下是一份测试代码

int main(){
	s[1].init(10);
	int k=1;
	for(int i=1;i<=1000000;i++){
		s[1].put(i);
		if(k*k==i||i>12100){
				k++;cout<<i<<" "<<s[1].gs<<" "<<s[1].wei<<" "<<s[1].t.size()<<endl;
		}
		//////if(i%1000==0)s[i].init(i+1000);

	}
	return 0;
}

这样顶多输出 ii 到12289

而如果我把上文的//////注释去掉,一运行电脑就卡死了。

请问如何解决?

2021/12/26 20:20
加载中...