最小割和最大权闭合子图的巧用

首先学习最大权闭合子图是因为它相对弱一点,不容易把脑子学坏。

最大权闭合子图

最大权闭合子图可以解决的问题有很多,我举几个例子。

Eg1、CF 小狗变性
最大闭合子图板子

Eg2、给你一个 DAG,点有点权(值域1e9),求一个拓扑序让它的最大子段和最大。
考虑构造一个最大闭合子图,然后最大子段和等价于一个后缀减去后缀的后缀,最大后缀是最大闭合子图板子,关键是我们要取一个后缀的把那一部分对冲掉,于是我们把图copy一个一样出来,一个点拆2个,a2->a1 , a2表示这个点被对冲掉了即可。

Eg3、给你一个 DAG,点有点权(值域1e9),求最大反链权值和
考虑构造一个最大闭合子图,和 Eg2 差不多,我们把 u->v 这条边拆点,拆成 u->v' , u'->u , v'->v ,然后赋值方式是 u 是原来的权值,u'是反权值,核心还是对冲。

进阶:最小割的选择模型。

我们刚刚本质上都是在选择,Eg1是选择性别,Eg2是选择 1,2,3表示前缀,中缀和后缀,Eg3是前缀,夹层和后缀,关于选择,我们有更牛逼的建模。

考虑用割一条边表示一个选择,这些选择穿成一个链,从 T->S 连一路 inf,这样可以保证割了之后这条链上的选择情况是单调的,也就是只有一个选择,这个模型的好处在于可以扩展选择之间的贡献。

Eg1、https://atcoder.jp/contests/abc347/tasks/abc347_g
点的选择天然的有5种,点与点之间的贡献是可算的,于是建图即可。

posted @ 2024-04-02 20:40  皮皮的橙子树  阅读(0)  评论(0)    收藏  举报