Codeforces Round 940 (Div. 2) and CodeCraft-23 (A-E)
A. Stickogon
题意:给定 \(n\) 根木棒长度,问最多构成几个多边形。
贪心,四边形不会优于三角形。
B. A BIT of a Construction
题意:构造包含 \(n\) 个非负元素的数组,使得 \(\sum a_i = k\),并最大化 \(a_1 \mid a_2 \dots | a_n\) 中 \(1\) 的个数。
如果 \(n = 1\),则 \(a = \{k\}\)。
否则:
- 将 \(k\) 的所有 \(1\) 往低位移,得到 \(1\) 的个数与 \(k\) 相同的最小的数 \(x\),如 \((10100)_2 \rightarrow (00011)_2\)
- 从低到高往 \(x\) 上添 \(1\),直到大于 \(k\)
最终只需选两个位置填 \(x\) 和 \(k - x\),其余填 \(0\)。
C. How Does the Rook Move?
题意:\(n \times n\) 的棋盘上 \(A\) 与电脑轮流下车,\(A\) 白子,电脑黑子,满足:
- 一行或一列只能存在一个车,不论颜色。
- \(A\) 下在 \((i, j)\),则电脑下 \((j, i)\)。
- \(A\) 下在 \((i, i)\),则电脑 skip。
\(A\) 先手,给定 \(A\) 的前 \(k\) 步棋,求不同的最终局面个数。
注意到最终局面与前 \(k\) 步棋的位置无关,只取决于于 \(k\) 步之后还剩多少行和列。
不妨让 \(n\) 表示新的行数。
- 下在 \((i, i)\) 相当于在剩余列中选出一列。
- 下在 \((i, j)\) 相当于白子选一列,黑子选一列。
如果当前下了 \(i\) 步 \(1\) 类棋。
此时 \(n - i\) 一定要偶数,否则 \(2\) 类棋下不完剩余列。
令 \(j = \dfrac{n - i}{2}\),则问题转化为在 \(n - i\) 个数中选出 \(j\) 对二元组的方案。
钦定白子选的列,然后黑子任意排列,则方案为 \(\begin{pmatrix}n - i\\ j \end{pmatrix} j!\)
所以最终局面数为 \(\sum\limits_{i = 0}^n [n - i \equiv 0 \pmod 2] \begin{pmatrix}n\\ i \end{pmatrix} \begin{pmatrix} n - i\\ j\end{pmatrix} j!\)
D. A BIT of an Inequality
题意:定义 \(f_{l, r} = \bigoplus\limits_{i = l}^r a_i\),求满足 \(f_{x, y} \oplus f_{y, z} > f_{x, z}\) 的三元组个数。
化简原式:\(f_{x, z} \oplus a_y > f_{x, z}\)
区间异或,转化为前缀异或,即 \(s_{z} \oplus s_{x - 1} \oplus a_y > s_{z} \oplus s_{x - 1}\)
- \(a_y\) 对左式的影响取决于最高位 \(j\)(低位影响的总和小于最高位)。
- 不等式成立当且仅当 \(s_{x - 1} \oplus s_{z}\) 的第 \(j\) 位为 \(0\),即\(s_{x - 1}\) 与 \(s_{z}\) 的第 \(j\) 位相同。
枚举 \(a_y\),\(s\) 中 \([1, y)\) 与 \([y, n]\) 的 \(0/1\) 个数之积即为答案。
E. Carousel of Combinations
题意:求 \(\sum\limits_{i = 1}^n \sum\limits_{j = 1}^i \begin{pmatrix}i\\j \end{pmatrix}(j - 1)! \bmod j\)
\(j\) 个连续数相乘,\(\lfloor\dfrac{i}{j}\rfloor \cdot j\) 一定被 \(j\) 整除,剩余数在模 \(j\) 意义下依次为 \(1, 2\dots ,j - 1\)。
所以原式可以写成 \(\sum\limits_{j = 1}^i \lfloor\dfrac{i}{j}\rfloor (j - 1)! \bmod j\)
威尔逊定理
威尔逊定理
当 \(p\) 为质数时,有
证明
当 \(p = 2\) 时,\((2 - 1)! \equiv -1 \pmod 2\)。
当 \(p > 2\) 时,即证 \(\prod\limits_{i = 2}^{p - 2} \equiv 1 \pmod p\)。
方程 \(x^2 \equiv 1 \pmod p\) 成立当且仅当 \(x \equiv 1\) 或 \(x \equiv p - 1\)。
所以 \(\forall x \in [2, p - 2]\),\(x^{-1} \in [2, p - 2]\) 且 \(x^{-1} \ne x\)。
也就是 \(\dfrac{n - 3}{2}\) 对数两两匹配互为逆元。
推广
合数 \(n = p_1^{\alpha_1}\dots p_k^{\alpha_k}\)。
当 \(n\) 不为完全平方数时,\(p_1 \ne \dfrac{n}{p_1}\) 且 \(p_1, \ \dfrac{n}{p_1} < n\),所以 \(n \mid (n - 1)!\)。
当 \(n = p^2\) 时:
如果 \(2p < n\),\(2p^2 \mid (n - 1)!\)。
否则 \(n = 4\),\((4 - 1)! \equiv 2 \pmod 4\)。
令 \(w_j = (j - 1)! \bmod j\),\(f_i = \sum\limits_{j = 1}^i \lfloor\dfrac{i}{j}\rfloor w_j \bmod j\)。
枚举 \(j = 4\) 或 \(j\) 为质数:
枚举 \(k\),对于 \(i \in [k\cdot j, k\cdot j + j)\),\(j\) 对 \(f_i\) 有 \(k \cdot w_j\) 的贡献,差分实现。