「清华集训2014」矩阵变换
解题思路
问题转化为找一个行与选的数字的完美匹配,记 \(pos[i][j]\) 为数字 \(i\) 在第 \(j\) 行的出现位置,要求不存在匹配边 \((a,b),(c,d)\) 使得 \(pos[b][a] < pos[b][c]\ \& \ pos[d][c] > pos[b][c]\) 。
观察发现,这个式子相当于让一条边的权值看做 \(pos[x][y]\) ,当存在一个行与一个数没有匹配但是强行让它们匹配后数的权值会变大,行的权值会变小,这个时候就出现了不合法情况。那么就是一个稳定婚姻匹配的模型,GS算法解决之。
话说我可能还有十几天就退役了才会这个算法,实在是没救了。
最近写代码好丑,就不贴了。