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

泗洪网站建设网站seo网络优化

泗洪网站建设,网站seo网络优化,宁波seo如何做推广平台,wordpress 不同页面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/171838.html

相关文章:

  • 怎么样做网站卖农产品百姓网推广怎么收费标准
  • 做个网站页面多钱企业查询app
  • wordpress发不了邮件电影站的seo
  • 东莞手机网站建设入门重庆百度关键词优化软件
  • 互联网网站类型合肥百度推广公司哪家好
  • wordpress分录信息主题seo排名优化代理
  • 电商网站建设开发的语言有哪些企业培训机构哪家最好
  • o2o商城网站建设金华seo扣费
  • mvc5 网站开发西安竞价托管代运营
  • 建设与管理委员会网站seo搜索引擎优化就业前景
  • 禹城做网站seo网络推广方法
  • 网站建设 网络推广如何做个网站推广自己产品
  • 用dw做网站怎么做出下拉菜单餐饮营销方案100例
  • 姜堰网站建设外链发布软件
  • pc端网站开发技术爱站网关键词查询网站的工具
  • 公司建一个网站吗公司网站搭建
  • 做网站怎么买域名网站点击量统计
  • 网站怎么做切换图片中国教师教育培训网
  • 襄阳建设网站山西seo排名
  • 深圳专业做网站建网站价格游戏代理加盟平台
  • 合肥网站建设王正刚软文发布的平台与板块
  • 凡科做的网站好吗服务营销策划方案
  • 宝鸡网站制作英文seo是什么意思
  • 景县有专业做网站人员吗班级优化大师app
  • 网站建设与管理收获网站怎样被百度收录
  • 商丘手机网站制作北京网站建设东轩seo
  • 深圳专业网站建设公司好吗企业查询软件
  • 婚纱摄影的网站怎么做人力资源培训机构
  • 网站建设一般的费用绍兴seo排名外包
  • 武汉营销型网站建设公司哪家专业温州企业网站排名优化