仙人掌&圆方树学习笔记

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

仙人掌

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

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


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


圆方树

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

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

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

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


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

转载于:https://www.cnblogs.com/Romeolong/p/10057431.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值