[HEOI2013] 钙铁锌硒维生素

Description

给定 2N 个行向量 A1,,AN,B1,,BN ,需要设计一种替换方案, Ai Bj 替换 (i[1,N],j[N+1,2N]) ,每个 j 只能用一次。要求是,每一个 Ai 被对应的 Bj 替换后, Ak(1kN) 间线性无关。并要求方案的字典序最小。

Announcement

本人线性相关知识有限,本文仅作定性分析。

Analysis

后面提到的 A,B,C 将是 N×N 的矩阵,其中 A N Ai B 也同理。

S 集合

首先题目应该是要求了 A 必须是线性无关,不然就输出不合法(题意交代不清)。

然后对于每个 Bj A 中只能有一个最小集合 S ,满足 S 线性无关,但加入 Bj S 将线性相关。

因为若有两个或以上的集合,不管是否有交集, A 将不会线性无关。

建图

我们将要求出对于每个 Bj 的相应集合 S ,然后显然 Bj 能替换的只能是 S 中的某个 Ai 。设 C×A=B ,则若 CTi,j0 ,则 Bj S 中含 Ai ,道理是因为 Ci,j×Aj,k=Bi,k ,而 Aj,k,Bi,k 都是行向量。

至于怎么求 C 呢,我们可以求出 A 的逆矩阵 A1 ,则有 C=B×A1

字典序最小

建好图后,要使得字典序最小,我们先跑一次完美匹配,然后枚举每个 Ai ,强制其选 Bj ,即把两个点在匹配中禁止走,然后看原来选 Bj 的点能否跑出增广路。

时间复杂度

求逆矩阵是 N3 的,生成方案也是 N3 的。
所以本题是 O(N3)

你可能感兴趣的:(逆矩阵,线性相关,匈牙利匹配)