闲话 23.1.27
闲话
今天下午可是被这题干沉默了(
就磕这题了
apj 三点给我的题 我到现在才看懂
我发现我好像脑子真不行
也没啥想说的了 这题挺ex的(
杂题
给定 \(n,m\),\(A_i\) 从 \([0,2^m-1]\) 中随机生成。
令 \(F(A)\) 为所有子集异或和的最大值,即对于一个下标集合 \(S=\{i_1,i_2,\cdots,i_k\}\),\(A_{i_1}\oplus A_{i_2}\oplus\cdots\oplus A_{i_k}\) 的最大值。
对于 \(2^{nm}\) 种生成方式,求 \(F(A)\) 的和模 \(998244353\)。
\(1 \le n,m\le 250000\)。
apj 这题成功给我干沉默了一个下午(
作为报复我写篇题解啥的(
首先可以转化成 \(\mathbb F_2^m\) 空间内选择 \(n\) 个向量,设一个向量的值是它写成二进制得到的数,一组向量的贡献就是它的标准正交基的值的加和,需要求出所有可能的向量组的贡献之和。
若希望统计答案,不难想到枚举标准基内向量的数量 \(k\) 和其中每个向量对应为 \(1\) 的位 \(a_i\)。这里位从 \(0\) 开始编号。
可以发现答案由三部分构成。
第一部分是求这一组标准基对应的向量组的数量。我们需要求的就是 \(n\) 个向量张成了一个 \(\mathbb F_2^k\) 空间的方案数。可以作转置得到 \(k\) 个 \(\mathbb F_2^n\) 空间内向量彼此线性无关的方案数,又转化成满秩 \(k\times n\) 的 01 矩阵的方案数,有经典结论答案即为
第二部分是求每个向量组对答案的期望贡献。可以发现标准基 \(k\) 个向量中为 \(1\) 的位在异或和中定为 \(1\),而其他位可能由其他向量异或得到,以 \(\dfrac 12\) 的概率为 \(1\)。因此这部分的答案即为
第三部分是这一组主元对应的其余 \(m - k\) 位的填法。第 \(i\) 个元素前面共有 \(a_i - (i - 1)\) 个位置是未被其他主元占据的,只有这些位可以自由选择 \(01\) 性,其他位由正交性都需要为 \(0\)。对答案求和得到
把这三部分乘起来就能得到标准基内向量的数量为 \(k\) 时答案
首先需要对答案进行一些处理。
第一部分可以在枚举 \(k\) 的过程中计算,这部分不是复杂度瓶颈。
第三部分可以将 \(2^{a_i}\) 和 \(2^{-(i - 1)}\) 分离。
前者可以用生成函数枚举 \(a_i\),写出来就是
其中 \(\dbinom{m}{k}_q\) 是 \(\text{q-binomial}\),展开就是
这点也可以通过前后删去 \((1 + x)\) 和 \((1 + 2^mx)\) 后对比系数得到。
为方便计算和化简,前者可以首先乘入第二部分后一同化简。
后者显然就是 \(2^{- \binom{k}{2}}\)。
然后就是第二部分了。观察这是三个加号,我们分开讨论。
首先是 \(2^{a_k}\) 的部分。由于这只有一个未确定值,我们可以枚举 \(a_k\) 的值。由于这时 \(a_k\) 已经确定,第三部分在乘入时需要将 \(k\) 减 \(1\),且上界已经确定是 \(a_k\) 了。
然后是求和的部分,我们不妨考虑换一个看法,用总的 \(2^m - 1\) 减去再选一个的贡献,乘入第三部分也就是
这里需要注意的是这个 \(1/2\) 的系数。笔者由于没有注意到这个系数想了一个小时(
最后是 \(\frac{1}{2}\)。可以直接乘进去。
枚举 \(k\),可以发现最终的答案就是
化简可以得到
\(2^{a_k}\) 那部分的求和号可以转化成 q-吸收恒等式的形式,然后再应用 q-上指标求和即可。其实就只是把配凑阶乘形式换成配凑 \((2^k - 1)\) 形式了。
因此原式可以化为
直接做即可。总时间复杂度 \(O(m + \log n)\)。
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/chitchat230127.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。