推 vagrantlike: 两位的讨论已经超出小弟的理解范围了=。= 07/23 22:43
→ vagrantlike: 所以网络流的max flow解法大致上思路是怎样的呢? 07/23 22:45
以图论/组合最佳化的观点来看这题:
1. 这题是找 maximum cardinality matching。
(每个格子各是一个node。凡是遇到两个相同又相邻的数字,就连一条edge。)
2. 因为棋盘是 bipartite graph (想像西洋棋盘的黑白格子),
所以这题是找 maximum cardinality bipartite matching。
3. mcbm 的其中一种解法是 maximum flow:
bipartite graph 一边的所有点各自接上 source,另一边的所有点各自接上sink,
然后跑 maximum flow ,就得到 mcbm。
4. 同时棋盘也是 planar graph,同时棋盘的 maximum degree = 4。
所以极可能有更加奇葩的算法。
如果你不懂图论/组合最佳化,有两种主要的应对方式:
1. 想办法自学。(这个学校不会教)
2. 当作没看到。(这题很可能只需要简单的贪心法,不需要搞这么复杂。)