• 仙人掌&圆方树学习笔记


    终于对仙人掌有了一点初步的理解.

    仙人掌

    仙人掌是什么?
    仙人掌是一个无向图.
    仙人掌有什么特点?
    仙人掌的每条边只属于一个简单环.
    下面是一个栗子

    有什么用呢?
    我们可以先用(tarjan)找出环,然后处理.
    下面是一道例题,(BZOJ4316)
    显然,在环内(dp),把答案并到根(环中(dfs)序最小的点)上,然后在环外(dp)就行了.
    详细题解在这里


    下面是另一道例题,(BZOJ1023)
    我们用(f[u])表示到(u)的最长距离.
    还是每次找到环就(dp)一番,然后再环外(dp).
    环内是一个简单的用单调队列优化的区间(dp).
    具体题解戳这里


    圆方树

    有的时候,朴素的(tarjan+dp)可能无法解决某些问题.
    我们需要构造圆方树.
    圆方树是什么?
    对于仙人掌中所有的环,都新建一个节点,连接环上所有节点.我们称原来的点为圆点,新建的点为方点.
    仙人掌上的桥就直接保留即可.
    找环就(tarjan)即可.
    比如上图的仙人掌,构造的圆方树长这样
    (其实(7,8)号点是方点)

    圆方树有一些很优秀的性质

    • 圆方树是一棵树
    • 圆方树中不存在方-方边.
    • 圆方树是联通的(对仙人掌而言)
      于是我们将仙人掌的问题转化为树上问题,可以有许许多多的解法了.

    下面是一道简单的例题,(BZOJ2125)
    详细题解在这里


    下面是一道困难的例题,(CF487E)
    详细题解在这里

  • 相关阅读:
    点分治 (等级排) codeforces 321C
    树上点分治 poj 1741
    判断点在直线的左侧还是右侧
    树的重心
    链式前向星
    树上点的分治
    构造 素数
    二进制 + 模拟
    枚举 + 三分 (游标)
    枚举 + 三分
  • 原文地址:https://www.cnblogs.com/Romeolong/p/10057431.html
Copyright © 2020-2023  润新知