闲话
今天下午可是被这题干沉默了(
就磕这题了
apj 三点给我的题 我到现在才看懂
我发现我好像脑子真不行
也没啥想说的了 这题挺ex的(
杂题
ARC139F
给定 n,m,Ai 从 [0,2m−1] 中随机生成。
令 F(A) 为所有子集异或和的最大值,即对于一个下标集合 S={i1,i2,⋯,ik},Ai1⊕Ai2⊕⋯⊕Aik 的最大值。
对于 2nm 种生成方式,求 F(A) 的和模 998244353。
1≤n,m≤250000。
apj 这题成功给我干沉默了一个下午(
作为报复我写篇题解啥的(
首先可以转化成 Fm2 空间内选择 n 个向量,设一个向量的值是它写成二进制得到的数,一组向量的贡献就是它的标准正交基的值的加和,需要求出所有可能的向量组的贡献之和。
若希望统计答案,不难想到枚举标准基内向量的数量 k 和其中每个向量对应为 1 的位 ai。这里位从 0 开始编号。
可以发现答案由三部分构成。
第一部分是求这一组标准基对应的向量组的数量。我们需要求的就是 n 个向量张成了一个 Fk2 空间的方案数。可以作转置得到 k 个 Fn2 空间内向量彼此线性无关的方案数,又转化成满秩 k×n 的 01 矩阵的方案数,有经典结论答案即为
k−1∏i=0(2n−2i)
第二部分是求每个向量组对答案的期望贡献。可以发现标准基 k 个向量中为 1 的位在异或和中定为 1,而其他位可能由其他向量异或得到,以 12 的概率为 1。因此这部分的答案即为
2ak+1−1+∑ki=12ai2
第三部分是这一组主元对应的其余 m−k 位的填法。第 i 个元素前面共有 ai−(i−1) 个位置是未被其他主元占据的,只有这些位可以自由选择 01 性,其他位由正交性都需要为 0。对答案求和得到
k∑i=12ai−(i−1)
把这三部分乘起来就能得到标准基内向量的数量为 k 时答案
k−1∏i=0(2n−2i)×(2ak+12k∑i=12ai−12)×k∑i=12ai−(i−1)
首先需要对答案进行一些处理。
第一部分可以在枚举 k 的过程中计算,这部分不是复杂度瓶颈。
第三部分可以将 2ai 和 2−(i−1) 分离。
前者可以用生成函数枚举 ai,写出来就是
[xk]m−1∏i=0(1+2ix)=2(k2)(mk)2
其中 (mk)q 是 q-binomial,展开就是
(mk)q=∏mi=1(qi−1)∏ki=1(qi−1)∏m−ki=1(qi−1)
这点也可以通过前后删去 (1+x) 和 (1+2mx) 后对比系数得到。
为方便计算和化简,前者可以首先乘入第二部分后一同化简。
后者显然就是 2−(k2)。
然后就是第二部分了。观察这是三个加号,我们分开讨论。
首先是 2ak 的部分。由于这只有一个未确定值,我们可以枚举 ak 的值。由于这时 ak 已经确定,第三部分在乘入时需要将 k 减 1,且上界已经确定是 ak 了。
然后是求和的部分,我们不妨考虑换一个看法,用总的 2m−1 减去再选一个的贡献,乘入第三部分也就是
12((2m−1)2(k2)(mk)2−(k+1)2(k+12)(mk+1)2)
这里需要注意的是这个 1/2 的系数。笔者由于没有注意到这个系数想了一个小时(
最后是 12。可以直接乘进去。
枚举 k,可以发现最终的答案就是
∑k≥1(2(k−12)m−1∑i=k−1(2i)2(ik−1)2+12((2m−1)2(k2)(mk)2−(k+1)2(k+12)(mk+1)2)−2(k2)−1(mk)2)2−(k2)k−1∏i=0(2n−2i)
化简可以得到
∑k≥1(2(k−12)m−1∑i=k−1(2i)2(ik−1)2+(2m−1−1)2(k2)(mk)2−(k+1)2(k+12)−1(mk+1)2)2−(k2)k−1∏i=0(2n−2i)
2ak 那部分的求和号可以转化成 q-吸收恒等式的形式,然后再应用 q-上指标求和即可。其实就只是把配凑阶乘形式换成配凑 (2k−1) 形式了。
m−1∑i=k22i(ik)2= 2k−1m−1∑i=k2i−k2i+1(ik)2= 2k−1(m−1∑i=k2i−k(2i+1−1)(ik)2+m−1∑i=k2i−k(ik)2)= (22k−2k−1)m−1∑i=k2i−k(i+1k+1)2+2k−1m−1∑i=k2i−k(ik)2= (22k−2k−1)(m+1k+2)2+2k−1(mk+1)2
因此原式可以化为
12∑k≥1((2m+1−2m−k−1)(mk)2−(k2k+1)(mk+1)2)k−1∏i=0(2n−2i)
直接做即可。总时间复杂度 O(m+logn)。
Submission.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现