5.9 CW 模拟赛 T3. 抢凳子
前言
数学很差, 当个乐子
思路
考虑不存在乘法操作
不难发现不存在冲突, 直接维护偏移量即可
考虑乘法操作时, \(n\) 与 \(x\) 互质的情况
猜测这种情况下, \(ax \equiv bx \pmod n\) 当且仅当 \(a = b\)
考虑简单证明, 不难发现此时存在模意义下的 \(x^{-1}\), 于是两边同时乘以 \(x^{-1}\) 即可化为 \(a \equiv b \pmod n\), 因为 \(a, b < b\), 所以 \(a - b\)
当然上面的证明是很不严谨的, 另外一种做法是 \(ax - bx \equiv 0 \pmod n\) 得到 \(n \mid (a - b)x\) 进而得到 \(n \mid (a - b)\) 从而得到 \(a \equiv b \pmod n\)
因此现在只要 \(n\) 与 \(x\) 互质, 我们可以抛开冲突不管
这个时候我们考虑类似的维护偏移量
考虑一次加法操作之后, 原本位置 \(p\) 的人会被移动到 \(p + x \bmod n\) 的位置
考虑一次乘法操作之后, 原本位置 \(p\) 的人会被移动到 \(px \bmod n\) 的位置
考虑反解, 不难发现
到这已经很好处理了, 维护加法和乘法的偏移量即可
现在还剩下乘法操作时, \(n\) 与 \(x\) 不互质的情况
简单拆分 \(x = \gcd(n, x) \times m\)
原柿变为 \(am \times \gcd(n, x) \equiv bm \times \gcd(n, x) \pmod n\)
进一步转化得到 \(am \equiv bm \pmod {\frac{n}{\gcd(n, x)}}\)
因此只要 \(a \equiv b \pmod {\frac{n}{\gcd(n, x)}}\), 那么 \(a, b\) 在进行操作之后重合
考虑进行一次移动之后, 剩下的位置有 \(p \in \left[0, \frac{n}{\gcd(n, x)}\right)\), 所有 \(p\) 的结束位置 \(p \times \gcd(n, x)\)
例如假设 \(\gcd(n, x) = 3, n = 12\), 最后剩下的点如下

考虑现在的点满足 \(i \not\equiv j \pmod {\frac{n}{\gcd(n, x)}}\), 如果要使得 \(iy \equiv jy \pmod n\) 成立需要什么条件呢?
等价于使得 \(n \mid (i - j)y\), 也就是使得 \(\frac{n}{\gcd(n, y)} \mid (i - j)\) 同时保证 \(\frac{n}{\gcd(n, x)} \nmid (i - j)\)
于是 \(\frac{n}{\gcd(n, x)} \nmid (i - j) \land \frac{n}{\gcd(n, y)} \mid (i - j)\)
考虑指数拆分法
不难发现, 我们设 \(n = p_1^{k_1} \times p_2^{k_2} \times \cdots \times p_m^{k_m}\)
然后对应的 \(x\) 的幂次设为 \(x_1, x_2, \cdots, x_m\)
那么 \(\frac{n}{\gcd(n, x)} = p_1^{k_1 - \min(k_1, x_1)} \times p_2^{k_2 - \min(k_2, x_2)} \times \cdots \times p_m^{k_m - \min(k_m, x_m)}\)
类似的, \(\frac{n}{\gcd(n, y)} = p_1^{k_1 - \min(k_1, y_1)} \times p_2^{k_2 - \min(k_2, y_2)} \times \cdots \times p_m^{k_m - \min(k_m, y_m)}\)
那么必然有一个 \(p_i\) 使得 \(k_i - \min(k_i, x_i) > k_i - \min(k_i, y_i)\)
这个时候显然有 \(x_i > y_i\), 因此我们要求 \(\gcd(n, x) \mid \gcd(n, y)\)
换到题意上来看, 我们会在原本的基础上, 把段数扩大为 \(\gcd(n, x)\) 的倍数
例如 \(\gcd(n, x) = 3, \gcd(n, y) = 6, n = 12\) 的情况, 原本的段数为 \(3\) 段, 现在的段数为 \(6\) 段
因为最初
\(i \equiv \left[0, \frac{n}{\gcd(n, x)}\right) \hspace{0.4cm} \left(\textrm{mod } {\frac{n}{\gcd(n, x)}}\right)\)
所以当模数变成 \(\frac{1}{k} \frac{n}{\gcd(n, x)}\) 时, 显然会使得至少一半的数睡着
接下来的条件变成 \(i \not\equiv j \hspace{0.4cm} \left(\textrm{mod } {\frac{n}{\gcd(n, y)}}\right)\), 如法炮制即可
这样总复杂度为 \(\mathcal{O} (n + \frac{n}{2} + \frac{n}{4} + \cdots) = \mathcal{O} (n)\)
简单验证一下, 倘若我们选择 \(\gcd(n, x) \nmid \gcd(n, y)\) 呢?
此时 \(i, j\) 想要满足 \(iy \equiv jy \pmod n\), 也就是 \(\frac{n}{\gcd(n, y)} \mid (i - j)\), 一定同时满足 \(\frac{n}{\gcd(n, x)} \mid (i - j)\), 那就不能哈
总结
互质关系往往和线性同余方程有关
加法和乘法的结合往往可以直接维护成加法和乘法的标记, 本质上是他们的结合律和分配率
找性质的时候多去画图模拟
底数确定的时候, 往往可以尝试指数拆分法


浙公网安备 33010602011771号