[HEOI2013] 钙铁锌硒维生素

来源:互联网 发布:linux phpmyadmin下载 编辑:程序博客网 时间:2024/04/28 05:23

Description

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

Announcement

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

Analysis

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

S集合

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

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

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

建图

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

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

字典序最小

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

时间复杂度

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

0 0
原创粉丝点击