码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj3224]普通平衡树

时间:2016-03-31 16:35:12      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

这是一道很普通的题。。

最近花了很多时间来想要去干什么,感觉自己还是太拿衣服

做这道题是因为偶尔看到了lavender的blog和她的bzoj早期AC记录,就被题目深深地吸引到了,原因有二:

自己splay还不是很会,想练练手

这道题居然过了两千多人,应该比较经典

>_<然后就看着jiangshibiao大爷的blog写代码,平易近人 http://blog.csdn.net/jiangshibiao/article/details/26011791

还稍稍改进了其中操作3、4的地方,yeah#

int rank(int x,int v)
{
  int f1=x;int ans=0;
  while(f1>0)
  {
    if(son[f1][1]==0)num[f1][1]=0; 
    if(a[f1]<v)ans+=num[f1][1]+1;
    if(a[f1]>=v)f1=son[f1][1];else f1=son[f1][2];
  }
  return ans+1;
}
int findx(int x,int k)
{
  if(k==num[x][1]+1)return a[x];
  if(k<=num[x][1])return findx(son[x][1],k);
  else return findx(son[x][2],k-num[x][1]-1);
}

然后没有发现太多的bug,但还是改了一个晚上,信息课的时候终于改出来了,MARK一下

insert(root,x),splay(node);//splay一定要放到主程序里写啊,否则错得太傻啦

 

此题数据详情请见 http://pan.baidu.com/s/1jHMJwO2

[bzoj3224]普通平衡树

标签:

原文地址:http://www.cnblogs.com/wxxlouisa/p/5341208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!