好题。

有一个显然的想法就就是二分图带权最大匹配,但是时间复杂度是O(n3)O(n^3) 及其难受,考虑 DP 但直接 DP 十分困难,考虑发掘一些性质。

利用贪心思想,先对wwhh 进行从小到大的排序,一个基本思想就是对应位置的相乘,用调整法不难证明这是最优决策,但是本题目中存在第ii 个人不能骑自己的马,所以最优解可能不会取到。

考虑到这个限制只是限制自己不能骑自己的马,合理猜测ii 位置匹配马的决策是一个范围,有结论:匹配范围为[i2,i+2][i-2,i+2]。证明考虑反证法,设ii 的禁止匹配位置为baniban_{i}。那么反证法,假设如果在这个以外的范围选,那么最多向前会造成两次(i,i1)(i,i-1) 无法匹配,自行画图发现这种情况最劣情况下也只会在i2i-2 的情况形成匹配。

借用 _sys的图:

image.png

完美匹配至少有三个红线和黑线相交整法不难证明如果两条线相交那么交换这两个匹配会得到更优的解。

让后考虑交换的过程,我们如果前ii 个人和前ii 匹马匹配完全,那么存在k<3k<3[i,i+k][i,i+k] 这区间内的人和马匹配,可以用反证法证明。

故,设fif_{i} 表示前ii 个人和前ii 匹马完成匹配的最大全职,所以从fi3,fi2,fi1f_{i-3},f_{i-2},f_{i-1} 转移过来即可,同时改成矩阵方式维护 DP 做动态 DP 即可,时间复杂度O(27nlogn)O(27n \log n),其中2727 是矩阵带来的常数。

提交记录