在学习支配树之前,请保证已经会写lca(tarian求法)

简介

支配树是什么?支配树能干什么?

  • 对于一个DAG" role="presentation" style="position: relative;">DAGDAG上的每个点w" role="presentation" style="position: relative;">ww,都存在点d" role="presentation" style="position: relative;">dd满足去掉d" role="presentation" style="position: relative;">dd之后起点无法到达w" role="presentation" style="position: relative;">ww,我们称作d" role="presentation" style="position: relative;">dd支配w" role="presentation" style="position: relative;">ww,d" role="presentation" style="position: relative;">dd是w" role="presentation" style="position: relative;">ww的一个支配点。T" role="presentation" style="position: relative;">TT中节点u" role="presentation" style="position: relative;">uu是u" role="presentation" style="position: relative;">uu子树中所有节点的支配点(必经点),
  • 支配w" role="presentation" style="position: relative;">ww的点可以有多个,但是至少会有一个。显然,对于起点以外的点,它们都有两个平凡的支配点,一个是自己,一个是起点。
  • 在支配w" role="presentation" style="position: relative;">ww的点中,如果一个支配点i≠wi≠w" role="presentation" style="position: relative;">i≠wi≠wi≠wi≠w满足i" role="presentation" style="position: relative;">ii被w" role="presentation" style="position: relative;">ww剩下的所有非平凡支配点支配,则这个i" role="presentation" style="position: relative;">ii称作w" role="presentation" style="position: relative;">ww的最近支配点(immediatedominator)" role="presentation" style="position: relative;">(immediatedominator)(immediatedominator),记作idom(w)" role="presentation" style="position: relative;">idom(w)idom(w)。

如果我们把图的起点称作s" role="presentation" style="position: relative;">ss,那么除s" role="presentation" style="position: relative;">ss以外每个点均存在唯一的idom" role="presentation" style="position: relative;">idomidom。于是,连上所有r" role="presentation" style="position: relative;">rr以外的idom(w)→widom(w)→w" role="presentation" style="position: relative;">idom(w)→widom(w)→widom(w)→widom(w)→w的边,就能得到一棵树,其中每个点支配它子树中的所有点,它就是支配树。

下面我们来考虑一个问题:给定一个起点s" role="presentation" style="position: relative;">ss和一个终点t" role="presentation" style="position: relative;">tt,询问删掉哪些点能够使s" role="presentation" style="position: relative;">ss无法到达t" role="presentation" style="position: relative;">tt。

不难发现,支配点与割点并不相同,我们可以用某位大佬的图证明这一观点



显然在这种情况中即使我们割掉割点依然能使s" role="presentation" style="position: relative;">ss走到t" role="presentation" style="position: relative;">tt点。所以我们没有办法使用割点来解决这个问题。

那么我们如何处理这个问题呢???

如果该DAG" role="presentation" style="position: relative;">DAGDAG是一棵树,那没什么好说的,显然有fa[u]==idom[u]" role="presentation" style="position: relative;">fa[u]==idom[u]fa[u]==idom[u],那么路径s−>v" role="presentation" style="position: relative;">s−>vs−>v上的点都应该是支配点,直接O(n)" role="presentation" style="position: relative;">O(n)O(n)解决了

如果不是树该肿么办?我们考虑用拓扑序建立支配树:

由于我们是根据拓扑序来进行处理的那么当我们处理到第i" role="presentation" style="position: relative;">ii个节点u" role="presentation" style="position: relative;">uu时,第1" role="presentation" style="position: relative;">11~i+1" role="presentation" style="position: relative;">i+1i+1个节点显然已经处理完了,对于所有能够直接到达点u" role="presentation" style="position: relative;">uu的节点,我们求出它们在支配树上的lca" role="presentation" style="position: relative;">lcalca v" role="presentation" style="position: relative;">vv,这个点v" role="presentation" style="position: relative;">vv就是点u" role="presentation" style="position: relative;">uu在支配树上的父亲。

如果使用倍增求lca" role="presentation" style="position: relative;">lcalca,那么O((n+m)log2n)" role="presentation" style="position: relative;">O((n+m)log2n)O((n+m)log2n)的时间内实现。

2018.06.26 Dominator Tree--支配树的更多相关文章

  1. 2018.06.26「TJOI2018」数学计算(线段树)

    描述 小豆现在有一个数 xxx ,初始值为 111 . 小豆有 QQQ 次操作,操作有两种类型: 111 $ m$ : x=x×mx=x×mx=x×m ,输出 xxx modmodmod MMM : ...

  2. 2018.06.26 NOIP模拟 纪念碑(线段树+扫描线)

    题解: 题目背景 SOURCE:NOIP2015−GDZSJNZXSOURCE:NOIP2015-GDZSJNZXSOURCE:NOIP2015−GDZSJNZX(难) 题目描述 2034203420 ...

  3. 2018.06.26 NOIP模拟 号码(数位dp)

    题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 Mike 正在在忙碌地发着各种各样的的短信.旁边的同学 Tom 注意到,Mike 发出短信的接收方手机号码似乎都满足着特别的 ...

  4. 【2018.06.26NOIP模拟】T3节目parade 【支配树】*

    [2018.06.26NOIP模拟]T3节目parade 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的表演时间 ...

  5. 2018.06.27 NOIP模拟 节目(支配树+可持久化线段树)

    题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的 ...

  6. 【2018.06.26NOIP模拟】T1纪念碑square 【线段树】*

    [2018.06.26NOIP模拟]T1纪念碑square 题目描述 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一 ...

  7. 康复计划#4 快速构造支配树的Lengauer-Tarjan算法

    本篇口胡写给我自己这样的老是证错东西的口胡选手 以及那些想学支配树,又不想啃论文原文的人- 大概会讲的东西是求支配树时需要用到的一些性质,以及构造支配树的算法实现- 最后讲一下把只有路径压缩的并查集卡 ...

  8. Java内存泄漏分析系列之七:使用MAT的Histogram和Dominator Tree定位溢出源

    原文地址:http://www.javatang.com 基础概念 先列出几个基础的概念: Shallow Heap 和 Retained Heap Shallow Heap表示对象本身占用内存的大小 ...

  9. HDU.4694.Important Sisters(支配树)

    HDU \(Description\) 给定一张简单有向图,起点为\(n\).对每个点求其支配点的编号和. \(n\leq 50000\). \(Solution\) 支配树. 还是有点小懵逼. 不管 ...

随机推荐

  1. The following packages have unmet dependencies错误

    当出现类似这类错误: The following packages have unmet dependencies: python-dev : Depends: python (= 2.7.5-5ub ...

  2. f5 2017.09.03故障

    1.下午14点50左右有同事反应epm等系统登录有问题.自测登录也是有同样的报错. 2.测试发现内部IP直接访问正常,但是访问f5的vip的方式访问不了.此时oa.邮件等系统也开始有同事发现故障. 3 ...

  3. 博客(二)注册页面django

    首先上一个html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. IIS下载,WebClient().DownloadFile下载

    new System.Net.WebClient().DownloadFile(serverPath, localPath); 有时候使用的时候,文件下载不下来.需要设置一下服务器上IIS的权限

  5. Ubuntu 16.04安装JDK并配置环境变量-【小白版】

    系统版本:Ubuntu 16.04 JDK版本:jdk1.8.0_121 1.官网下载JDK文件jdk-8u121-linux-x64.tar.gz 我这里下的是最新版,其他版本也可以 2.创建一个目 ...

  6. 汇编中CMP的作用

    假设现在AX寄存器中的数是0002H,BX寄存器中的数是0003H.执行的指令是:CMP  AX,  BX 执行这条指令时,先做用AX中的数减去BX中的数的减法运算.列出二进制运算式子:      0 ...

  7. 理解Linux中的shutdown、poweroff、halt和reboot命令

    原文  http://os.51cto.com/art/201706/541525.htm   在本篇中,我们会向你解释 shutdown.poweroff.halt 以及 reboot 命令.我们会 ...

  8. Pycharm使⽤用秘笈v0.3PyCharm使⽤用秘籍

    Pycharm使⽤用秘笈v0.3PyCharm使⽤用秘籍 1. PyCharm的基本使⽤用 在PyCharm下为你的Python项⽬目配置Python解释器器 1. Project:当前项⽬目名> ...

  9. Python知识

    1   注释 单行注释:#  内容 多行注释:A   """                   ''' 内容            或    内容 "&quo ...

  10. 向kafka批量发送已存在的txt文件

    需要利用kafka发送txt或log文件,有两种方式:1.自己写程序:2.利用kafka自带脚本. 自己写程序: import org.apache.kafka.clients.producer.Ka ...