当前位置: 首页 > wzjs >正文

阜新网站建设网站推广系统

阜新网站建设,网站推广系统,网上开店的好处,宁波公司核名网站splaysplaysplay 是一种平衡树,但是并不完全平衡。 它凭借一系列操作使得树趋近于平衡,所以与 AVLAVLAVL 比起来,时间可能没那么快,但是 splaysplaysplay 可以应用到的地方很多,比如说区间翻转,这是 AVLAV…

splaysplaysplay 是一种平衡树,但是并不完全平衡。

它凭借一系列操作使得树趋近于平衡,所以与 AVLAVLAVL 比起来,时间可能没那么快,但是 splaysplaysplay 可以应用到的地方很多,比如说区间翻转,这是 AVLAVLAVL 无法做到的。

并且LCT要用到splay。

规定

  • tree[x].son[0/1]tree[x].son[0/1]tree[x].son[0/1] 表示 xxx 的左右儿子是谁。
  • tree[x].sizetree[x].sizetree[x].size 表示以 xxx 为根的子树大小。
  • tree[x].fatree[x].fatree[x].fa 表示 xxx 的父亲节点。

原理

旋转

splaysplaysplay 也是利用旋转来维护的,它旋转时传的是儿子节点,然后将儿子节点转到父亲节点。

旋转时有两种情况,一种是我是你的左儿子,一种是我是你的右儿子,但其实两种情况分析起来本质上都差不多,可以打在一起。(不用像 AVLAVLAVL 一样分开)

代码

int pdd(int x) { return tree[tree[x].fa].son[1] == x; }//x是它父亲的哪个儿子
void rotato(int x) {int y = tree[x].fa, z = tree[y].fa, p = pdd(x);tree[z].son[pdd(y)] = x;tree[x].fa = z, tree[y].fa = x;tree[y].son[p] = tree[x].son[p ^ 1], tree[tree[x].son[p ^ 1]].fa = y;tree[x].son[p ^ 1] = y;updata(y), updata(x);//更新信息
}

splay

splaysplaysplay 肯定有 splaysplaysplay 操作。

splay(x,y)splay(x, y)splay(x,y) 就是用来将 xxx 转成 yyy 的儿子。

用到了旋转操作。

代码

bool pd(int x, int y) { return tree[x].fa != y; }
void splay(int x, int goal) {push(x);//因为有时候要区间翻转,这个用来用来下传翻转标记,如果题目没有翻转可以不用for (int y; pd(x, goal); rotato(x)) {y = tree[x].fa;if (pd(y, goal))//用来加快程序速度,删除对程序正确性不会有任何影响rotato(pdd(y) == pdd(x) ? y : x);}if (!goal)root = x;
}

查找,删除的操作都可以参照AVL来做,所以不再叙述。(可以看看我的另一篇博客)

翻转

我们来看看翻转操作如何实现。

我们假设要将区间 l,rl, rl,r 翻转,我们设 l′,r′l',r'l,r 分别为 lll 位置的左边, rrr 位置的右边。

则我们可以先将 lll 节点 splaysplaysplay 到根节点,再将 rrr 节点 splaysplaysplay 到根节点的右儿子。

此时 rrr 节点的左子树就是我们要翻转的区间。

由于平衡树的性质,我们只需要将该子树的每个节点的左右儿子交换,便可翻转整个区间。

此时我们前面的 splaysplaysplay 中的 pushpushpush 就是用来将翻转标记翻转下来。

代码

void push(int x) {if (tree[x].fa)push(tree[x].fa);pushdown(x);
}
void reverse(int l, int r) { //此时的l,r就是l',r'splay(l, 0), splay(r, l), tree[tree[r].son[0]].flag ^= 1;
}

此时 splaysplaysplay 的基本操作就讲完了。

http://www.dtcms.com/wzjs/65131.html

相关文章:

  • 英文网站模板优化大师百科
  • 江西响应式网站建设网址大全浏览器app
  • 如何做信用网站截图惠州网站排名提升
  • 搜索引擎优化行业seo推广培训
  • 方城网站设计当日alexa排名查询统计
  • 柳州网站制作公司武汉seo价格
  • 建设网站的4个根目录被删百度小说排行榜前十
  • 来宾北京网站建设广点通官网
  • 高端外贸网站建设服装成都网络营销公司排名
  • 购物网站设计理念seo入门黑帽培训教程
  • 企业管理系统oa南京seo关键词优化预订
  • 营销网站制作平台有哪些杭州关键词推广优化方案
  • web模板免费下载网站小说推广平台有哪些
  • 做网站如何寻找客源百度指数明星人气榜
  • 网站怎么做中英文切换关键词搜索爱站网
  • 网站 建设服务器漯河seo推广
  • 怎么看网站做的好不好百度网盘app下载安装官方免费版
  • 网络公司网站建设中国突然宣布大消息
  • 江西合创建设工程有限公司 网站外贸接单平台
  • 广东省著名商标在什么网站做今日刚刚发生新闻事件
  • 做网站找个人还是公司湖北疫情最新消息
  • 秦皇岛电子网站建设视频推广方案模板
  • python网站开发免费发布网站seo外链
  • 做哪些网站流量大网站优化什么意思
  • 网站设计报价单关键词吉他谱
  • 做网站图标的软件个人怎么做百度竞价
  • 做一个b2b网站网站设计公司建设网站
  • 做网上竞猜网站合法吗seo优化公司排名
  • 宁夏网站建设电话进入百度首页官网
  • 广西医疗网站建设肇庆seo按天收费