Description
给定2N个行向量A1,…,AN,B1,…,BN,需要设计一种替换方案,Ai被Bj替换(i∈[1,N],j∈[N+1,2N]),每个j只能用一次。要求是,每一个
Announcement
本人线性相关知识有限,本文仅作定性分析。
Analysis
后面提到的A,B,C将是N×N的矩阵,其中A是
S 集合
首先题目应该是要求了A必须是线性无关,不然就输出不合法(题意交代不清)。
然后对于每个
因为若有两个或以上的集合,不管是否有交集,
建图
我们将要求出对于每个Bj的相应集合S,然后显然
至于怎么求C呢,我们可以求出
字典序最小
建好图后,要使得字典序最小,我们先跑一次完美匹配,然后枚举每个Ai,强制其选Bj,即把两个点在匹配中禁止走,然后看原来选Bj的点能否跑出增广路。
时间复杂度
求逆矩阵是N3的,生成方案也是N3的。
所以本题是O(N3)。