闲话 23.1.27

闲话

今天下午可是被这题干沉默了(
就磕这题了
apj 三点给我的题 我到现在才看懂
我发现我好像脑子真不行

也没啥想说的了 这题挺ex的(

杂题

ARC139F

给定 n,mAi[0,2m1] 中随机生成。

F(A) 为所有子集异或和的最大值,即对于一个下标集合 S={i1,i2,,ik}Ai1Ai2Aik 的最大值。

对于 2nm 种生成方式,求 F(A) 的和模 998244353

1n,m250000

apj 这题成功给我干沉默了一个下午(
作为报复我写篇题解啥的(

首先可以转化成 F2m 空间内选择 n 个向量,设一个向量的值是它写成二进制得到的数,一组向量的贡献就是它的标准正交基的值的加和,需要求出所有可能的向量组的贡献之和。
若希望统计答案,不难想到枚举标准基内向量的数量 k 和其中每个向量对应为 1 的位 ai。这里位从 0 开始编号。

可以发现答案由三部分构成。

第一部分是求这一组标准基对应的向量组的数量。我们需要求的就是 n 个向量张成了一个 F2k 空间的方案数。可以作转置得到 kF2n 空间内向量彼此线性无关的方案数,又转化成满秩 k×n 的 01 矩阵的方案数,有经典结论答案即为

i=0k1(2n2i)

第二部分是求每个向量组对答案的期望贡献。可以发现标准基 k 个向量中为 1 的位在异或和中定为 1,而其他位可能由其他向量异或得到,以 12 的概率为 1。因此这部分的答案即为

2ak+11+i=1k2ai2

第三部分是这一组主元对应的其余 mk 位的填法。第 i 个元素前面共有 ai(i1) 个位置是未被其他主元占据的,只有这些位可以自由选择 01 性,其他位由正交性都需要为 0。对答案求和得到

i=1k2ai(i1)

把这三部分乘起来就能得到标准基内向量的数量为 k 时答案

i=0k1(2n2i)×(2ak+12i=1k2ai12)×i=1k2ai(i1)

首先需要对答案进行一些处理。

第一部分可以在枚举 k 的过程中计算,这部分不是复杂度瓶颈。

第三部分可以将 2ai2(i1) 分离。
前者可以用生成函数枚举 ai,写出来就是

[xk]i=0m1(1+2ix)=2(k2)(mk)2

其中 (mk)qq-binomial,展开就是

(mk)q=i=1m(qi1)i=1k(qi1)i=1mk(qi1)

这点也可以通过前后删去 (1+x)(1+2mx)对比系数得到。
为方便计算和化简,前者可以首先乘入第二部分后一同化简。
后者显然就是 2(k2)

然后就是第二部分了。观察这是三个加号,我们分开讨论。
首先是 2ak 的部分。由于这只有一个未确定值,我们可以枚举 ak 的值。由于这时 ak 已经确定,第三部分在乘入时需要将 k1,且上界已经确定是 ak 了。
然后是求和的部分,我们不妨考虑换一个看法,用总的 2m1 减去再选一个的贡献,乘入第三部分也就是

12((2m1)2(k2)(mk)2(k+1)2(k+12)(mk+1)2)

这里需要注意的是这个 1/2 的系数。笔者由于没有注意到这个系数想了一个小时(
最后是 12。可以直接乘进去。

枚举 k,可以发现最终的答案就是

k1(2(k12)i=k1m1(2i)2(ik1)2+12((2m1)2(k2)(mk)2(k+1)2(k+12)(mk+1)2)2(k2)1(mk)2)2(k2)i=0k1(2n2i)

化简可以得到

k1(2(k12)i=k1m1(2i)2(ik1)2+(2m11)2(k2)(mk)2(k+1)2(k+12)1(mk+1)2)2(k2)i=0k1(2n2i)

2ak 那部分的求和号可以转化成 q-吸收恒等式的形式,然后再应用 q-上指标求和即可。其实就只是把配凑阶乘形式换成配凑 (2k1) 形式了。

i=km122i(ik)2= 2k1i=km12ik2i+1(ik)2= 2k1(i=km12ik(2i+11)(ik)2+i=km12ik(ik)2)= (22k2k1)i=km12ik(i+1k+1)2+2k1i=km12ik(ik)2= (22k2k1)(m+1k+2)2+2k1(mk+1)2

因此原式可以化为

12k1((2m+12mk1)(mk)2(k2k+1)(mk+1)2)i=0k1(2n2i)

直接做即可。总时间复杂度 O(m+logn)

Submission.

posted @   joke3579  阅读(95)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示