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() 能用来初始化,
如下是一份测试代码
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;
}
这样顶多输出 i 到12289
而如果我把上文的//////注释去掉,一运行电脑就卡死了。
请问如何解决?