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的更多相关文章

  1. 【CF1053E】Euler tour

    [CF1053E]Euler tour 题面 CF 洛谷 大概意思是你有一棵树,然而你并不知道这棵树是啥.给你一个确定了一些位置的欧拉序(就是\(ST\)表求\(LCA\)的那个序列),问你是否存在一 ...

  2. Union-Find(并查集): Dynamic Connectivity 问题

    设计算法一般所使用的方法过程 什么是Dynamic connectivity 我们的problem就是支持这两种操作: Union与connected query Example 问题是两个objec ...

  3. CF1053E Euler tour 构造

    正解:构造 解题报告: 传送门! 这种题目一般都是首先考虑合法性 这题也不例外,思考怎么样是合法的呢? 有四点: 1)a[1]=a[2n-1],显然不说 2)若a[i]=a[j],则(j-i)& ...

  4. 2018.09.25 codeforces1053E. Euler tour(并查集+st表+模拟)

    传送门 毒瘤细节题. 首先考虑不合法的情况. 先把相同的值配对,这样就构成了一些区间. 那么如果这些区间有相交的话,就不合法了. 如何判断?DZYO安利了一波st表,我觉得很不错. 接着考虑两个相同的 ...

  5. CF1053E Euler tour

    题意 给出一个某些位置不全的欧拉序,求出一个符合条件的,或输出不行 传送门 \(n \le 5*10^5\) 思路 终于不是一道神仙\(dp\) 变成了一道神仙构造 以下简称两相同数围成的是一个区间, ...

  6. 【置顶】Trotyl's OI tree

    \(\rm thx\):@\(\rm UntilMadow\) ! \(\color{Green}{\rm Pupil}\) :只会一点点 \(\color{blue}{\text{Expert}}\ ...

  7. BZOJ3786: 星系探索(伪ETT)

    题面 传送门 题解 坑啊--我好像把\(Splay\)的东西全忘光了-- \(ETT\)(\(Euler\ Tour\ Tree\))是一种可以资瓷比\(LCT\)更多功能的数据结构,然而不管是功能还 ...

  8. [BZOJ3786]星系探索(伪ETT)

    3786: 星系探索 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 1638  Solved: 506[Submit][Status][Discuss ...

  9. Solution -「BZOJ #3786」星系探索

    \(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个点的有根树,点有点权,支持 \(q\) 次操作: 询问 \(u\) 到根的点权和: 修改 \(u\) ...

随机推荐

  1. .NET MVC实现多图片上传并附带参数(ajaxfileupload)

    做网站呢,都免不了要做图片上传. 还记得去年做微信的时候用WebAPI+ajaxfileupload.js做了一个能够附带参数上传的功能,博文地址:.NET WebAPI 实现图片上传(包括附带参数上 ...

  2. SQLite3源程序分析之虚拟机

    前言 最早的虚拟机可追溯到IBM的VM/370,到上个世纪90年代,在计算机程序设计语言领域又出现一件革命性的事情——Java语言的出现,它与c++最大的不同在于它必须在Java虚拟机上运行.Java ...

  3. eclipse环境搭建

    百度经验http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 1.JAVA JDK 2.Andriod SDK eclipse里 ...

  4. Git原理及常用操作命令总结

    git原理介绍及操作 git 原理——

  5. wm_concat

    select to_char(wm_concat(ssss)) from (select replace(C_CELL_CONTENT ,'=$','') ssss ,rownum ss from ( ...

  6. Android基础总结(三)

    测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试:function test 单元测试:unit test 集成测试:integration test 系统测试:syste ...

  7. 本地显示svg正常显示,在工程项目中无法正常显示

    提前说明:此文仅记录个人项目问题,不具有众参考意义. 原因: 工程中对引用的资源进行解析设置,即resource设置. 解决方法: 找到静态资源加载路径,添加 if(urlpostfix.equals ...

  8. NodeJS 学习总结 01 安装配置

    1 安装NodeJS 具体参考已发布的文章Ubuntu学习总结-07 Nodejs和npm的安装 2 使用淘宝 NPM 镜像 国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像 ...

  9. thinkphp修改和删除数据

    1.在控制器MainController里面写一个方法,调用Nation表中的数据. public function zhuyemian() { $n = D("Nation"); ...

  10. .net App_Browser文件夹的作用

    该可选的文件夹包含.browser文件..browser文件描述浏览器(不管是移动设备浏览器,还是台式机浏览器)的特  征和功能.ASP.NET在安装路径下的Config\Browser文件夹中安装了 ...