Loading

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\) 的位置

考虑反解, 不难发现

\[ \begin{gather*} p' \equiv (p + \beta) \times \alpha \equiv \alpha p + \alpha \beta \pmod n \\ \Downarrow \\ (\alpha p + \alpha \beta + y) \times x \equiv (\alpha x) p + (\alpha \beta + y)x \pmod n \\ \Downarrow \\ \cdots \end{gather*} \]

到这已经很好处理了, 维护加法和乘法的偏移量即可

现在还剩下乘法操作时, \(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\), 最后剩下的点如下
pExQCy6.png

考虑现在的点满足 \(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\)

pEx3efJ.png

因为最初
\(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)\), 那就不能哈

总结

互质关系往往和线性同余方程有关

加法和乘法的结合往往可以直接维护成加法和乘法的标记, 本质上是他们的结合律和分配率

找性质的时候多去画图模拟

底数确定的时候, 往往可以尝试指数拆分法

posted @ 2025-05-11 20:56  Yorg  阅读(19)  评论(0)    收藏  举报