CF1383C 题解

CF1383C

观察一下题目的性质,他说了同一种颜色可以有若干个一起变色,那么我们考虑将同一种颜色看成相同的东西。

考虑对于其建图,也就是如果 A i A_i Ai 变成 B i B_i Bi 就建立 A i → B i A_i \to B_i AiBi 的边。

然后本质上就是叫我们重新建立一张图满足 A i A_i Ai B i B_i Bi 联通,边数最少的图。

本质上每一次变换都是需要一次操作。

但是不仅是如此,如果说 u → v u \to v uv 的路径是存在的,必须满足其路径上的边的变化时间是递增的。那么就是让我们对于边进行标号,然后满足图上任意路径都是递增的。

我们发现如果任意两个点都能互相到达,边数最少的就是一个环加上一条链。也就是这样的情况。
flvHxI.png
这样我们需要消耗 2 n − 2 2n - 2 2n2 条边。

但是我们可以更优,也就是考虑对于这个图,找到一个最大的 D A G DAG DAG 进行向链一样连边,然后后面的点进行这样的操作。

flxowT.png

这样子肯定是最优的。
然后我们考虑通过 D p Dp Dp 计算这个答案,发现直接计算选了 S S S 中的点,最大 D A G DAG DAG 的大小不好算。那么我们就找下面链的最少点个数。

我们对于每一个弱连通块分别考虑,设 f ( S ) f(S)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值