CF Edu160E Matrix Problem

场上疯狂想求任意解+改动解至最优。。想不下去的时候一定要再读一遍题跳出来啊。

限制每一行每一列的 \(1\) 的个数,这很匹配啊!!

考虑网络流,左侧 \(n\) 个节点连流量 \(a_i\),右侧 \(m\) 个节点连流量 \(b_i\)

对于原矩阵中为 \(0\) 的项 \((i,j)\),若新矩阵中为 \(0\) 则流量为 \(0\)、费用为 \(0\),若为 \(1\) 则流量为 \(1\)、费用为 \(1\),故可以从 \(a_i\)\(b_j\) 连边权为 \(1\)、费用为 \(1\) 的边;对于原矩阵中为 \(1\) 的项 \((i,j)\),若新矩阵中为 \(0\) 则流量为 \(0\)、费用为 \(1\),若为 \(1\) 则流量为 \(1\)、费用为 \(0\),故可以默认花费一点费用,从 \(a_i\)\(b_j\) 连边权为 \(1\)、费用为 \(-1\) 的边。由于所有环一定包含终点,故负权边不会造成影响。

之后跑 dinic 即可。

posted @ 2023-12-20 11:02  ydtz  阅读(17)  评论(0编辑  收藏  举报