[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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值