2018.06.26 Dominator Tree--支配树
在学习支配树之前,请保证已经会写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--支配树的更多相关文章
- 2018.06.26「TJOI2018」数学计算(线段树)
描述 小豆现在有一个数 xxx ,初始值为 111 . 小豆有 QQQ 次操作,操作有两种类型: 111 $ m$ : x=x×mx=x×mx=x×m ,输出 xxx modmodmod MMM : ...
- 2018.06.26 NOIP模拟 纪念碑(线段树+扫描线)
题解: 题目背景 SOURCE:NOIP2015−GDZSJNZXSOURCE:NOIP2015-GDZSJNZXSOURCE:NOIP2015−GDZSJNZX(难) 题目描述 2034203420 ...
- 2018.06.26 NOIP模拟 号码(数位dp)
题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 Mike 正在在忙碌地发着各种各样的的短信.旁边的同学 Tom 注意到,Mike 发出短信的接收方手机号码似乎都满足着特别的 ...
- 【2018.06.26NOIP模拟】T3节目parade 【支配树】*
[2018.06.26NOIP模拟]T3节目parade 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的表演时间 ...
- 2018.06.27 NOIP模拟 节目(支配树+可持久化线段树)
题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的 ...
- 【2018.06.26NOIP模拟】T1纪念碑square 【线段树】*
[2018.06.26NOIP模拟]T1纪念碑square 题目描述 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一 ...
- 康复计划#4 快速构造支配树的Lengauer-Tarjan算法
本篇口胡写给我自己这样的老是证错东西的口胡选手 以及那些想学支配树,又不想啃论文原文的人- 大概会讲的东西是求支配树时需要用到的一些性质,以及构造支配树的算法实现- 最后讲一下把只有路径压缩的并查集卡 ...
- Java内存泄漏分析系列之七:使用MAT的Histogram和Dominator Tree定位溢出源
原文地址:http://www.javatang.com 基础概念 先列出几个基础的概念: Shallow Heap 和 Retained Heap Shallow Heap表示对象本身占用内存的大小 ...
- HDU.4694.Important Sisters(支配树)
HDU \(Description\) 给定一张简单有向图,起点为\(n\).对每个点求其支配点的编号和. \(n\leq 50000\). \(Solution\) 支配树. 还是有点小懵逼. 不管 ...
随机推荐
- vue 父组件使用子组件中的data或methods
1.调用子组件的时候 定义一个ref 2.在父组件里面通过 this.$refs.verify.属性 this.$refs.verify.方法
- HDU 1754 I Hate It(线段树区间查询,单点更新)
描述 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老 ...
- stark组件之路由分发【模仿Django的admin】
一.先看下django的admin是如何进行路由分发的 1.先看下django的admin的url路径有哪些 其实很简单,假如有一个书籍表,那么每张表对应四个url,增.删.改.查 查看的url ht ...
- Exception starting filter encodingFilter
1. maven运行tomcat6出现错误Exception starting filter encodingFilter: 严重: Exception starting filter encodin ...
- SQL update语句 更新和查询同一张表 冲突
#update 和 select在同一张表的时候会显示冲突 报错信息: [Err] 1093 - You can't specify target table 'tb_a' for update i ...
- how2j网站前端项目——天猫前端(第一次)学习笔记1
首先是公共页面的学习,有页头.页脚和搜索框. 一.页头就是天猫网站的置顶导航栏: 看似简单,实际做起来也不容易. 写html还是比较简单的,撸起袖子就可以写完.可要想做到上图的样式就难了,难就难在CS ...
- samrty模板变量操作符
count_sentences [计算句数],示例:{$smarty.get.name|count_sentences} count_words [计算词数],示例:{$smarty.get.name ...
- js 逻辑运算符
两个逻辑运算符的操作顺序在自己的脑海里一直理不清,用js做了个实验 <script type="text/javascript"> if(false && ...
- 解决织梦替换ueditor编辑器后栏目与单页无法保存内容
织梦的默认编辑器是ckeditor,没有插入代码的功能,不够强大,就换成了百度的UEditor编辑器. 使用织梦DedeCMS百度整合UEditor编辑器时,碰到了栏目内容或者单页无法保存的问题,这个 ...
- geoserver 发布无坐标png
1.geoserver 安装一些插件的时候,直接去http://docs.geoserver.org/ 官网,选择自己geoserver对应的版本的插件就可以了. 2.geoserver 发布自身带有 ...