trie树

struct data{
	int l,r,v,size,rnd,w;
}tr[100005];


rnd//堆的随机权值
 
int n,size,root,ans;

void update(int k){
	tr[k].size=tr[tr[k].l].size+tr[tr[k].r].size+tr[k].w;
}


void insert(int x){
 if (k==0)
   {
   	size++;k=size;
	tr[k].size=tr[k].w=1;tr[k].v=x;tr[k].rnd=rand();
	return; 
   }
   tr[k].size++;
   if (tr[k].v==x) tr[k].w++;
   else if (x>tr[k].v)
     {
     	insert(tr[k].r,x);
     	if (tr[tr[k].r].rnd<tr[k].rnd) lturn(k);
	 }
	 else {
	 	insert(tr[k].l,x);
		if (tr[tr[k].l].rnd<tr[k].rnd) rturn(k); 
	 }
     
} 
全部评论

相关推荐

2024-12-20 18:56
已编辑
武汉轻工大学 后端
牛牛大啊:er图都冒出来了😂
点赞 评论 收藏
分享
西松屋:说明原部门有机会把
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务