[北大集训 2025] 解开尘封的序列
题目描述
给定长度为 \(n\) 的 \(d\) 位 \(p\) 进制整数序列 \(a\)。
给定长度为 \(n\) 的序列 \(w\) 和长度为 \(p^d\) 的序列 \(z\)。
定义 \(\text{popcount}_p, \operatorname{and}_p, \operatorname{or}_p, \operatorname{xor}_p\) 分别为 \(p\) 进制下的非零位个数、按位取
最小值、按位取最大值、不进位加法。
对于所有 \(0\leq u<p^d\),定义 \(u\) 的生成序列 \(F(u)\) 如下:对于 \(1\leq i\leq n\),
令 \(b_i=A\cdot \text{popcount}_p(a_i \operatorname{and}_p u)+B \cdot \text{popcount}_p(a_i \operatorname{or}_p u) + C\cdot
\text{popcount}_p(a_i \operatorname{xor}_p u)\),然后令 \(F(u)=\text{sorted}([b_1,...,b_n])\)。
有 \(q\) 次询问,每次询问给定 \(A,B,C,l_1, r_1,l_2,r_2\),求
数据范围:\(1\leq n,q\leq 3\times 10^5\)。
子任务 \(1\sim 6:p = 2,d ≤ 12;\)
子任务 \(7,8:p=3,d\leq 5\)。
题解
对于 \(p=2\),注意到有等式:
因此实际上可以把 \(\operatorname{or}\) 的那一项拆掉,原问题变成了一个二维问题。对于每一个 \(u\) 可以统计出 \((\text{popcount}(a_i \operatorname{and} u),\text{popcount}(a_i \operatorname{xor} u))\) 为定值的有多少个,这个仅有 \(O(d^2)\) 种情况,然后我们大致要做的是一个这样的事情:
有 \(2^d\) 个 \(u\),每一个 \(u\) 对应 \(O(d^2)\) 个线段加,然后查询 \(u\in [l_1,r_1]\) 内这些线段对于一个区间 \([l_2,r_2]\) 的贡献和。线段之间的顺序会因为 \(A,B,C\) 的改变而改变。
接下来使用一些奇怪的瞪眼或联想可以注意到实际上线段之间本质不同的排序方式只有 \(O(d^2)\) 种!源于如下的一个观察:
对于两个数对 \((x_0,y_0),(x_1,y_1)\),\(Ax_0+By_0\) 和 \(Ax_1+By_1\) 之间的大小关心仅于 \(\frac{y_0-y_1}{x_1-x_0}\) 与 \(\frac{A}{B}\) 的大小关系有关(这里不考虑分母为 \(0\) 的情况,分母为 \(0\) 的情况可以通过讨论的方法剔除),而由于 \(\frac{y_0-y_1}{x_1-x_0}\) 仅有 \(O(d^2)\) 种取值,因此对于这些端点将 \(\frac{A}{B}\) 划分出的 \(O(d^2)\) 个段,段内的排序关系实际上是一样的,因此可以一起处理。
经过这样的转化可以将其变成一个数据结构问题,使用 \(O(\sqrt n)-O(1)\) 的分块,便可以做到 \(O(2^dd^4+q\sqrt n)\) 的时间复杂度。
问题到这里看似已经做完了,不过这个 \(p=3\) 是什么情况?
故事实际上是这样的,一天出题人在梦中突然想到如果将这个观察扩展到高维会是什么样子,于是这个题不幸的多了两个 \(\text{sub}\)。
当 \(p=3\) 时由于 \(p=2\) 时的等式不成立,现在变成了彻彻底底的三维问题。
接下来是考察勇气的时刻了,大胆猜想 \(p=3\) 时本质不同的排序仍然很少,取很多 \((A,B,C)\) 抽样看看,天那!本质不同的排序只有 \(1242\) 个。把 \(p=2\) 的做法略做修改就过了,这是怎么回事呢?我们考虑分析一下高维空间下排序数量的量级。
经过一些思考,实际上可以发现这个问题实际上就是超平面的划分问题!对于每两个 \(d\) 维向量,差分后将得到一个过原点的超平面,由于过原点,划分出的超平面数会比原本问题少一些。毛估估一下可以得到当给出的过原点的超平面有 \(n\) 个时,排列个数不会超过 \(\sum_{i=0}^{d-1}2\binom{n-1}{i}=O(n^{d-1})\) 个,如果每一维的值域是 \(O(V)\) 的话,则排列的个数将会是 \(O(V^{d(d-1)})\) 量级的。\(p=2\) 对应 \(d=2\),因此可以得到 \(O(V^2)\) 量级的界。
而 \(p=3\) 的问题则对应 \(d=3\) 的情况,因此可以得到 \(O(V^6)\) 量级的界,时间复杂度算一下大概是 \(O(3^dd^9+q\sqrt n)\)。
经过如上优雅的转化,我们成功的将一个数据结构问题和一个组合几何问题建立了深刻的联系,得到了 \(\text{OI}\) 中绝无仅有的抽象时间复杂度。出题人相信,这个美妙的题目,可以给 \(\text{OI}\) 逐梦之路上的你,提供一个有力的援助。
本文来自博客园,作者:zhouhuanyi,转载请注明原文链接:https://www.cnblogs.com/zhouhuanyi/p/19549468

浙公网安备 33010602011771号