q模拟入门 ARC139F Solution

ARC139F

等价于 F2m 里选出 n 个向量,求每种选择方案之和

枚举线性基大小 k​,设其主元是 a1ak​,等价于让 n​ 个向量张成 k​ 维空间,

等价于数有多少个 nk 列的满秩 01 矩阵,转置矩阵后变成有多少个 kn01 矩阵线性无关

也等价于 n​ 维空间选出 k​ 个向量彼此线性无关,方案数:

i=0k1(2n2i)

线性基最大异或和期望:主元必选,非主元可选可不选

2ai+i=0ak1[j,aji]122i=12(2ak+11+2ai)

再有主元之后有多少个线性基,那么考虑填入,从低到高依次填入,那么有填法:

2ai(i1)

那么答案就是:

k=0min(n,m)a1aki=0k1(2n2i)12(2ai+2ak+11)i=1k2ai(i1)=k=0min(n,m)a1aki=0k1(2ni1)12(2ai+2ak+11)i=1k2ai=k=0min(n,m)i=0k1(2ni1)a1ak(2ai+2ak+11)21+ai

问题就在于求出后面部分

对于 a1ak2ai=[xk]i=0m1(1+2ix)=2k(k1)/2·(mk)2

F(x)=i=0m1(1+2ix),则有:

F(2x)=i=1m(1+2ix)=F(x)·(1+2mx)1+x

也就是 (1+x)F(2x)=F(x)(1+2mx)2kfk+2k+1fk+1=2mfk+fk+1

我们得到 fk+1=2m2k2k+11fk,又因为 f0=1,所以有

fn=k=0n12m2k2k+11=k=0n12k(2mk1)2k+11=2n(n1)/2k=0n12mk12nk1=2n(n1)/2(mn)2

所以 1 可以拿出来了。

再考虑 a1ak2ai·2ai 怎么弄,不妨设其为 F(m,k)

可以将其表达为 2m1j,aji2i

而后面这一部分,事实上可以考虑按位统计贡献,也就是考虑选出 k+1 个元素时候,保留原本的 a1ak,加入一个新的 j,式子也就变成了 2j+ai

也就是:

F(m,k)=(2m1)2k(k1)/2(mk)2j=0m1a1ak,jai,i2j+ai=(2m1)2k(k1)/2(mk)2a1ak+1(k+1k)2i=1k+1ai=(2m1)2k(k1)/2(mk)2(k+1)2k(k+1)/2(mk+1)2

然后考虑 2ak+12a

可以考虑枚举 ak,有:

=t=1m2ta1ak,ak=t12ai=t=1m22t1a1ak1,ak1<t12ai=t=1m22t12(k1)(k2)/2(t1k1)2=2(k1)(k2)/2+1t=0m122t(tk1)2=2(k1)(k2)/2+1t=0m1(2t+1·2tk+1·2k2)(tk1)2=2k(k1)/2t=0m1(2t+11)2tk+1(tk1)2+2tk+1(tk1)2=2k(k1)/2((mk)2+t=0m1(2t+11)2tk+1(tk1)2)

又因为:

(tk)q=i=0k1qti1qki1(t+1k+1)q=(tk)qqt+11qk+11

所以有:

=2k(k1)/2((mk)2+t=0m1(2t+11)2tk+1(tk1)2)=2k(k1)/2((mk)2+(2k1)t=0m12tk+1(t+1k)2)=2k(k1)/2((mk)2+(2k1)t=1m2tk(tk)2)=2k(k1)/2((mk)2+(2k1)(m+1k+1)2)

全部回代,答案是:

=k=0min(n,m)i=0k1(2ni1)a1ak(2ai+2ak+11)21+ai=k=0min(n,m)12i=0k1(2ni1)×((2m1)2k(k1)/2(mk)2(k+1)2k(k+1)/2(mk+1)22k(k1)/2·(mk)2+2k(k1)/2((mk)2+(2k1)(m+1k+1)2))=12k=0min(n,m)i=0k1(2ni1)2k(k1)/2((mk)2(2m+12mk1)(mk+1)2(k2k+1))

posted @   spdarkle  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示