ARC 200 B ~ D 题解
B. LCM
给一个比较暴力的做法。
首先,肯定是先固定 \(X_1\),再求出 \(X_3\),最后求出 \(X_2\)。
因为限制位数,所以想要有一个可以快速调整位数的形式,那可以令 \(X_1, X_2, X_3\) 只有质因子 \(2\)。
但是这样的话 \(X_3\) 比较难以调整,所以加一个质因子,令 \(X_1, X_2, X_3\) 只有质因子 \(2\) 和 \(3\)。
然后求 \(X_3\),我们考虑给 \(X_1\) 乘几个 \(2\) 或 \(3\),此时 \(X_2\) 的一个质因子的个数就固定了(乘的哪个,哪个就固定)。枚举 \(X_2\) 另一个质因子的数量即可。
代码。
C. Movie Theater
观察可以得到,若区间 \(i\) 包含区间 \(j\),则 \(P_i > P_j\)。其他情况都没有限制。
那么连一条 \(i \to j\) 的边。
注意到这张图一定无环,不然就会有形如 \(P_i > P_j > P_k > P_i\) 的非法情况出现。
那么按拓扑序分别给每个节点赋上 \(n, n - 1, n - 2, \cdots, 2, 1\) 即可。
注意拓扑排序时要用 priority_queue,这样可以保证序号更大的点 \(P\) 也更大,让字典序最小。
时间复杂度:\(O(n^2)\) 建图,\(O(n \log n)\) 拓扑排序。
话说为什么 \(\sum n\) 只给到了 \(500\)?
代码。
D. |A + A|
首先,如果 \(K = M\),那么只需要构造 \(A = (0, 1, \cdots, M - 1)\) 即可,这是显然的。
那么,我们考虑令 \(A\) 为一段连续的数。设 \(A = [0, r]\),其中 \(2r < m\),那么 \(A_i + A_j \in [0, 2r]\)。我们希望这个区间里有 \(K\) 个数,即 \(2r + 1 = K \iff r = \dfrac{K - 1}{2}\)。容易发现,这种构造只能做 \(K\) 为奇数。
接下来做 \(K\) 为偶数。
如果我们在 \(A\) 中抠掉一个数呢?令 \(A = \{ 0 \} \cup [2, r]\),其中 \(2r < m\),此时 \(A_i + A_j \in [4, 2r] \cup \{ 0 \} \cup [2, r]\)。
- 若 \(r = 2\):\(A_i + A_j \in \{ 0, 2, 4 \}\),共有 \(3\) 个数,舍去。
- 否则 \(r \ge 3\):\(A_i + A_j \in \{ 0 \} \cup [2, 2r]\),共有 \(2r\) 个数。
我们希望这个区间里有 \(K\) 个数,即 \(2r = K \iff K = \dfrac{r}{2}\)。容易发现,这种构造只能做 \(K \ge 6\),因为我们需要 \(r \ge 3\)。
那 \(K = 2, 4\) 怎么做呢?
- \(K = 2\):\(3\) 个数是不可能的,只能 \(2\) 个数。可以令 \(A = \left( 0, \dfrac{M}{2} \right)\),这样可以做 \(M\) 为偶数。\(M\) 为奇数明显没法做。
- \(K = 4\):\(2\) 个数是不可能的,需要 \(3\) 个数。可以令 \(A = \left( 0, \dfrac{M}{4}, \dfrac{M}{2} \right)\),这样可以做 \(4 \mid M\)。其他情况明显没法做。
代码。

浙公网安备 33010602011771号