在学习支配树之前,请保证已经会写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. OpenGL ES 2 for Android - A Quick Start Guide

    英文原版,语法很简单,带书签,带实例,很好的书,从头到尾讲述OpenGL强烈推荐!~~~ 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com ...

  2. Android模拟器故障:waiting for target deviceto come online

    关闭再打开模拟器.删除再新建模拟器均无效. 解决办法:在AVD Manager中,选择立即冷启动(Cold Boot Now)模拟器.

  3. TZOJ 1705 Dining(拆点最大流)

    描述 Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she wil ...

  4. AtCoder Regular Contest 096 D - Static Sushi(线性dp)

    Problem Statement "Teishi-zushi", a Japanese restaurant, is a plain restaurant with only o ...

  5. [剑指Offer]62-圆圈中最后剩下的数(约瑟夫环问题)(法二待做)

    题目链接 https://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6?tpId=13&tqId=11199&t ...

  6. linux 备忘录

    1. ps aux|grep 程序 -------->查看当前程序是否运行 ps aux|grep nginx 2. tar -zxvf 压缩包 ---------> 解压缩 tar -z ...

  7. vue总结2

    1. 给router-link添加事件 之前用v-link 现在用 router-link 添加事件要用原生的.native修饰v-on <my-component v-on:click.nat ...

  8. Android开发之自定义的ProgressDialog

    package com.example.dialog; import android.app.ProgressDialog; import android.content.Context; /** * ...

  9. iserver-数据库型数据源导入后原dataset名称和数据库表名不一致的问题

    一.发现问题 系统中发现某个房屋的分层平面图查询不到 1.去sqlserver空间库中查询发现这个表‘房间_100200T001D001’不存在 2.在工作空间中查询发现是有这个数据集的 二.解决问题 ...

  10. andorid 三种方式的练习

    layout1   线性布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...