[SPOJ839]最优符号
Posted kgxw0430
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[SPOJ839]最优符号相关的知识,希望对你有一定的参考价值。
题目描述
- 有点懵……这和最小割有关系?而且这题暴力也不好写吧……总不能一个一个枚举权值吧。
- 考虑如果点的权值只有1和0的情况。如果一个点到另一个点之间有一条路径,并且它们已经确定一个为1,一个为0,那么这条路径上的点你不管如何赋值,都至少会产生1的代价。那么我们想要达到最小值,应该是考虑如何选择,所有从权值为1的节点到权值为0的节点路径上的点的权值,让每条路径产生的代价尽可能小。
- 一条路径为了尽量只产生1的代价,那么它一定是前一段的点权值为1,后一段点权为0。如果两条路径交叉,有这样几种情况:
- 1、
这种情况,两条边只会产生1的代价。 - 2、
这种情况会产生2的代价。 - 注意,多条边的交叉情况也是基于这两种的。发现它具有网络流的性质吧?所以考虑它怎么和网络流联系在一起。把初始点权为1的看做S集合,点权为0的看做T集合。我们其实要做的就是处理完S到T的所有边,使代价最小。把代价当做割开一条路径的花费,所求问题即为割最少的边使得S到T不连通。
- 建立源点s,连向S内所有点一条容量为inf的边。建立汇点t,T内所有点连向t一条容量为inf的边。原图中的边正常连,不过容量为1,。跑最小割即为答案。
- 到此,我们解决了点权只有0和1的情况。那么点权<=1e9该怎么办呢?
- 哎,二进制拆分啊,跑log次最小割不好了。妙哉妙哉~
- 因为SPOJ没注册上,代码后续再补……(咕咕)
以上是关于[SPOJ839]最优符号的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ-2400Spoj839Optimal Marks 最小割 + DFS