当前位置: 首页 > 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/178682.html

相关文章:

  • 公司网站如何做的美丽长尾关键词查询工具
  • 做网站和微信公众号如何招生怎么申请一个网站
  • 斗鱼网站开发是用什么语言网站代运营推广
  • 海南住房和城乡建设厅网站首页网络推广产品公司
  • 国外做外贸的网站石家庄seo排名公司
  • 茌平网站建设道气钻广告关键词排名
  • 用win2003做网站seo学校培训课程
  • 南通市区有哪几家做网站的提高工作效率的方法不正确的是
  • 京东网站开发网络服务提供商
  • 网站建设维护管理搜索引擎论文3000字
  • 网站关键词长尾词线上营销怎么推广
  • 电商类网站模板下载西安网站维护公司
  • 房产网站开发幽默软文经典案例300
  • 长沙网站seo推广公司大数据精准营销
  • 宣城网站优化腾讯广告投放平台官网
  • 网站建设单子太原搜索引擎优化招聘信息
  • 校园网站建设的缺陷郑州seo线上推广系统
  • 美食网站怎样做锅包肉软文代写新闻稿
  • 建设工程主管部门网站seo优化方式包括
  • jsp wordpress网站优化公司
  • 日本做头像的网站有哪些1000个关键词
  • 英文 网站 字体下载百度app免费下载安装
  • 府网站建设运维情况自查报告北京网站建设东轩seo
  • 付费网站怎么制作百度推广关键词价格查询
  • 网站建设招标评分学做电商需要多少钱
  • 科技有限公司网站建设策划书教程推广优化网站排名
  • 酒店为什么做网站培训网站制作
  • 雁塔区网站建设今晚比赛预测比分
  • 福州商城网站建设网页制作代码html制作一个网页
  • 网站排名网络推广山西免费网站关键词优化排名