专栏文章
题解:P5008 [yLOI2018] 锦鲤抄
P5008题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min7wu2x
- 此快照首次捕获于
- 2025/12/01 22:01 3 个月前
- 此快照最后确认于
- 2025/12/01 22:01 3 个月前
P5008 [yLOI2018] 锦鲤抄 题解
闲话: 背景很感人,是为数不多的有故事而且有情感的好题(我很喜欢,但题目名字可以改一改)。
题目大意
如果抛开背景不谈,那么题目可以变为:
给出 个点 条边的一张有向无环图,每个点有一个点权值。
你每次可以选择一个有入度的点获取其点权然后删除这个点。
求能取 次的情况下最大能获得的权值和。
解题思路
前言: 没学过 Tarjan 的建议先去学一学,很有用的。
如果是有向无环图:
- 入度为 的点可以直接删。
- 如果点 连向点 ,并且 和 我们都想删除,那么我们肯定是先删除 再删除 ,否则删 时 还有入边(来自 )就不能删。
如果有环:
如果整个强连通分量没有来自外部的入边(即入度为 的强连通分量),那么你无法直接删除它里面的任何一个点,因为每个点都有来自环内其他点的入边。
为了打破这个僵局,你必须至少保留这个强连通分量中的一个点不删除(这样其他点才能按顺序删掉,为了权值和最大,我们保留权值最小的那个点)。
Tarjan
Tarjan 算法可以把有向图的所有强连通分量(SCC)找出来,并且把每个 SCC 缩成一个点,形成一个新的 DAG(称为缩点图),这样就可以了,是不是很有用?
代码
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...