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

老山网站建设郑州企业网站seo

老山网站建设,郑州企业网站seo,电脑培训网上课程,ui设计是什么含义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/343120.html

相关文章:

  • 石家庄小学网站建设google推广教程
  • 怎么自己开发软件宜昌网站seo
  • 网站展现形式网站建设怎么弄
  • 网站设计案例分析网站seo案例
  • app开发公司的困难seo关键词怎么选择
  • 外贸营销型网站建设的技巧好的竞价托管公司
  • 网站做淘宝客收入咋样怎么去推广一个app
  • 猪八戒兼职网站怎么做任务赚钱成都关键词排名系统
  • 用java可以做网站吗网络营销的50种方法
  • 网页草图绘制债务优化是什么意思
  • iis更改默认网站天猫代运营
  • 建站系统模板建站优化公司
  • gd域名官网做百度seo
  • 洛阳市网站建设网站推广优化服务
  • 通信科技网站设计自媒体135免费版下载
  • wordpress 博客信息seo网站推广案例
  • 亚马逊店铺出售网站情感营销案例
  • 建网站软件精准广告投放
  • php语言做购物网站网络推广代理
  • 自己有主机怎么做论坛网站seo全网营销
  • 南庄网站开发百度seo关键词点击软件
  • 如何建wap网站深圳优化排名公司
  • 做外贸门户网站谷歌搜索引擎入口2023
  • 网站介绍ppt怎么做百度账号
  • 凡科网建站怎么样太原关键词排名推广
  • 同城型网站开发营销 推广
  • 石家庄网站制作武汉腾讯广告投放平台官网
  • 查看别人wordpress主题厦门网站优化
  • 手机做网站对比路由器做网站有哪些推广平台和渠道
  • 网站开发类毕业论文深圳营销推广公司