Euler Tour Tree与dynamic connectivity
Euler Tour Tree最大的优点就是可以方便的维护子树信息,这点LCT是做不到的.为什么要维护子树信息呢..?我们可以用来做fully dynamic connectivity(online).
Euler Tour Tree
维护将树中的边u--v变成u->v,v->u后的Euler Tour.
- 换根: 因为Euler Tour是一个环,那么我们可以在任意一个k->u的地方切断,然后把这段东西接到最后去,这样就把u变成根了
- Link: 先换根,然后添加u->v与v->u的边就好了,也就是把序列变成(u)+u->v+(v)+v->u
- Cut : 先换根,然后找到u->v与v->u,切掉就好了
- Findroot: 若Euler Tour中的最后一条边是k->u,那么u就是根
那么我们需要维护的就是: 对于每个u任意的一条k->u的指针和每条边对应的指针.
dynamic connectivity
我们维护log(点数)个图G_i以及这些图的生成森林F_i,每个图G_{i+1}都是G{i}删去一些边形成的,我们给每条边附一个权值level表示让这条边出现的最大G_i.
当我们插入一条边, 就在G_0与F_0中加入那条边, 它的level为0.
我们询问时只要询问F_0中是否联通.
当我们删除一条边(u--v:level), 就删除i<=level所有的G_i中的这条边, 然后我们考虑,在如果这次删除将F_i中劈成Sub(u)子树与Sub(v)子树, 我们需要寻找一条替代这条边的边.假设|Sub(u)|<=|Sub(v)|,那么我们在Sub(u)处于G_i中的出边遍历,寻找一条Sub(u)->Sub(v)的边.如果找到了那就是一条替代边,对于遍历到不符合条件的边我们知道它可以插入G_{i+1}中,且level++.
这样每条边最多被遍历到log次,因为每次增加level都会使它所在的最大F_i大小至少减半,而它只会一次担任替代边.
dynamic connectivity(offline)
但是其实这个没什么卵用,如果可以离线的话有更简单的做法
我们考虑使用按秩合并的并查集,那么所有操作都是log的且我们可以回退以前的状态,然后对时间分治就好了.
但是这个做法太不暴力了,而且复杂度没有更优..
其实我们只需要维护对于边的删除时间最大生成树就好了..
LCT 1个log..
Euler Tour Tree与dynamic connectivity的更多相关文章
- 【CF1053E】Euler tour
[CF1053E]Euler tour 题面 CF 洛谷 大概意思是你有一棵树,然而你并不知道这棵树是啥.给你一个确定了一些位置的欧拉序(就是\(ST\)表求\(LCA\)的那个序列),问你是否存在一 ...
- Union-Find(并查集): Dynamic Connectivity 问题
设计算法一般所使用的方法过程 什么是Dynamic connectivity 我们的problem就是支持这两种操作: Union与connected query Example 问题是两个objec ...
- CF1053E Euler tour 构造
正解:构造 解题报告: 传送门! 这种题目一般都是首先考虑合法性 这题也不例外,思考怎么样是合法的呢? 有四点: 1)a[1]=a[2n-1],显然不说 2)若a[i]=a[j],则(j-i)& ...
- 2018.09.25 codeforces1053E. Euler tour(并查集+st表+模拟)
传送门 毒瘤细节题. 首先考虑不合法的情况. 先把相同的值配对,这样就构成了一些区间. 那么如果这些区间有相交的话,就不合法了. 如何判断?DZYO安利了一波st表,我觉得很不错. 接着考虑两个相同的 ...
- CF1053E Euler tour
题意 给出一个某些位置不全的欧拉序,求出一个符合条件的,或输出不行 传送门 \(n \le 5*10^5\) 思路 终于不是一道神仙\(dp\) 变成了一道神仙构造 以下简称两相同数围成的是一个区间, ...
- 【置顶】Trotyl's OI tree
\(\rm thx\):@\(\rm UntilMadow\) ! \(\color{Green}{\rm Pupil}\) :只会一点点 \(\color{blue}{\text{Expert}}\ ...
- BZOJ3786: 星系探索(伪ETT)
题面 传送门 题解 坑啊--我好像把\(Splay\)的东西全忘光了-- \(ETT\)(\(Euler\ Tour\ Tree\))是一种可以资瓷比\(LCT\)更多功能的数据结构,然而不管是功能还 ...
- [BZOJ3786]星系探索(伪ETT)
3786: 星系探索 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 1638 Solved: 506[Submit][Status][Discuss ...
- Solution -「BZOJ #3786」星系探索
\(\mathcal{Description}\) Link. 给定一棵含 \(n\) 个点的有根树,点有点权,支持 \(q\) 次操作: 询问 \(u\) 到根的点权和: 修改 \(u\) ...
随机推荐
- Url重写——伪静态实现
简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...
- vue.js 第四课
(1).插值:在view层上显示model的资料. (2).绑定表达式:在view层上 执行js命令. (3).指令:在view层上 执行写好的功能. (4).缩写:v-bind 绑定 特性 v-on ...
- Android 使用代码主动去调用控件的点击事件(模拟人手去触摸控件)
使用代码主动去调用控件的点击事件(模拟人手去触摸控件) //View 可以是LinearLayout,Button,TextView View.performClick();
- C#设计模式(3)——工厂方法模式
一.概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类. 二.代码实现 namespace 设计模式之工厂方法模式 { /// <summary&g ...
- mysql Packet for query is too large (1185 > 1024)异常
注:最近mysql一直提示如下错误 Packet for query is too large (1185 > 1024). You can change this value on the s ...
- windows中LNK文件打开方式恢复(每日一修(1))
相信有些用户曾试过错误地把LNK文件的打开方式更改其他文件,导致系统所有的快捷方式都失效.在vista与Windows7系统还不普遍使用的时候,相信大家会有点惊慌失措,不要紧,下面只要大家进行如下操作 ...
- SSH框架的简单上传功能的实现
1.创建项目. 2.导入开发包. 3.配置web.xml. 配置内容就是配置struct2的内容如下: <?xml version="1.0" encoding=" ...
- bat转exe工具 Bat To Exe Converter v2.4.7 绿色版
一款非常小巧的工具,从它的名称便能知道它的功能:它能将BAT或CMD文件转换成 EXE 文件.使用它,你可以保护由自己开发的软件的软件代码,创建一个漂亮的图标,让软件看起来更专业. 下载地址: htt ...
- BZOJ 后缀自动机四·重复旋律7
后缀自动机四·重复旋律7 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的 ...
- Leetcode 60. Permutation Sequence
The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...