[BZOJ2844]albus就是要第一个出场(线性基)

本文探讨了如何通过构建线性基的方式解决特定数字在一系列二进制向量线性组合中的位置问题。文章详细介绍了如何将原始向量组转化为线性无关的基底,并讨论了重复数字对位置计算的影响。
部署运行你感兴趣的模型镜像

=== ===

这里放传送门

=== ===

题解

把给出的数字看成二进制,它们都可以看作是向量。然后要求的就是所有向量的线性组合中Q这个向量的出现位置。

首先把给出的所有东西搞一个线性基出来,因为这些基向量的不同组合就能组合出不同的数字。
先不考虑重复数字的问题,如果要求数字Q的出现位置的话,首先一个比较直观的想法是,如果能求出这样一组基底,它从小到大排序以后可以满足:设只选i向量构造出来的数字为R,那么1..i-1的这些向量不管怎么选,构造出来的数字都是小于R的。那么如果把第i个向量的选择状态表示成0或者1,显然1号位置权重最低,n号位置权重最高。
把这组基底中表示出数字Q需要的向量选择状态用01串表示,从n到1读出来的这个二进制数字就是Q的出现位置,因为这个数字的含义实际上就是它前面有多少数字小于等于它。

上面那段话说的可能有点乱o_o。。具体可以类比一下二进制单位向量:{(1,0,0,0…0),(0,1,0,0,…,0),(0,0,1,0,…,0),{0,0,0,0,…,1}},这组向量中每个向量看成数字分别是{1,2,4,8,…},可以发现1..i-1号位置的数字就算全部选上,构造出来的向量也是小于第i号位置的数字的。这样的话如果要求数字5的出现位置,可以发现它要用1号向量:(0,0,1)和4号向量:(1,0,0),那5的出现位置就是第5个啦。。。

实际上要求的这种特征可以等价为每一个二进制位在向量组中只有一个对应向量,这也就是要求把基向量组化成行最简型矩阵。可以证明这种形式一定是可以达到的。
再举个例子来说,如果是{5,6,8}这三个数字,它可以求出来一组线性基是{3,6,8}。但是这组基底显然不满足我们的要求,因为如果选择了1号和2号向量,它的二进制数表示是3,得到的数字是5,但是它还不如只选2号向量得到的数字6大,那么我们肯定不能说数字5出现的位置是3。5出现的位置明明是2啊对吧。
出现这种问题的原因就是有一个二进制位在两个向量中出现了,那么我们只要把向量组化成行最简型就能解决问题了。

啰嗦了这么一大堆。。
但是如果考虑重复数字的话怎么办呢?
可以发现在求线性基的过程中有一些向量被异或成了0,也就是说它们可以由别的向量线性表示。因为基向量组和原向量组是等价的,那么我们现在来观察基向量组。它里面有很多0向量呀,那也就是异或出来一个数字可以随便加上这些0,值仍然是不变的。
也就是说当我们用上面所说的不考虑重复数字的方法得到的数字Q的出现位置为pos,而现在基向量组里面有z个0向量。那么Q前面的pos-1个数字随便选几个0加进去,得到的数字还是比Q小。那也就是说当考虑重复数字的时候,Q前面一共有

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值