ARC136 简要题解

A

首先,字符 c 等价于分隔符,因此遇到 c 直接输出。

否则遇到一个 a 将其变为 bb 无意义,因为要求字典序最小这个位置必须填 a,因此遇到 a 也直接输出。

否则遇到 b 如果其后为 b 则一定需要把这个 bb 变为 a,否则若其后为 a 则最优方案为:ba -> bbb -> ab.

复杂度 \(\mathcal{O}(n)\).

B

首先把 \(a, b\) 集合不同的情况判掉。

注意到操作可逆,于是直观的想法是将 \(a, b\) 排成有序后比较。

朴素的想法是每次从后面挑一个最小的元素然后 shift 到最前面,但当元素有重复时这样不一定能够正确排序。

于是分所有元素是否互不相同考虑。

当所有元素互不相同时,直接这样模拟即可,但存在更快的方式:

  • 将序列离散化为排列,每次操作后排列奇偶性不变。

存在元素相同时,可以证明 \(a\) 一定可以通过操作得到 \(b\)

证明:记任意一种重复的元素为 \(x\),从序列中取出两个 \(x\),其余部分按照朴素想法排序,将两个 \(x\) 移动到最后,除了最后三个元素 \(a, b\) 均相同,最后三个元素可重集相同,由于最后三个数存在相同的数因此一定可以到达。

复杂度 \(\mathcal{O}(n \log n)\),瓶颈在于排序。

C

序列上为经典问题,考虑两个相邻数之间间隔作为左右括号数量的下界,容易证明这个下界易于达到。

对于环上的问题,由于左右两端接在一起,只考虑下界有可能使得最后剩余的元素 \(> 0\),通过手玩发现答案为:

\[\max(\frac{1}{2}\sum\limits_i ^ {n - 1} |a_i - a_{(i + 1) \bmod n}|, \max_i ^ {n - 1} a_i) \]

证明:记前者为 \(S\),后者为 \(M\),根据 \(S, M\) 的大小关系讨论(需要将问题拓展到 \(a_i \ge 0\) 的情况)。

\(S < M\),则 \(a\) 中一定不存在 \(0\),将全体减 \(1\),最大值减 \(1\).

\(S = M\),考虑环被极长的最大值段分割成了几段,则一定至多一个段存在 \(0\),单独不操作这个段,\(S, M\) 同时减 \(1\).

\(S > M\),任选一段极长的最大值连续段减 \(1\)\(S\)\(1\).

复杂度 \(\mathcal{O}(n)\).

D

等价于统计 \(10 ^ 6 - 1 - a_i\) 处所有 \(a_i\)\(6\) 维前缀和,复杂度 \(\mathcal{O}(D10 ^ D + n)(D = 6)\).

E

通过观察每个点 \(i\) 不可以到达的点的性质,将 \(j > i\)\(j\) 为质数的部分删去,发现 \(2 \mid i\) 时点集相比于 \(2 \nmid i\) 时少很多,于是分 \(i\) 的奇偶性打表考虑,同时将不可达点 \(j\) 质因数分解观察,可以得到如下结论:

  • \(i(i \ne 1)\) 可达 \(j\) 当且仅当 \(i + [2 \nmid i]\mathrm{lpf}(i) \le j - [2 \nmid j]\mathrm{lpf}(j)\) 其中 \(\mathrm{lpf}(i)\)\(i\) 的最小质因子。

证明:\(i + \mathrm{lpf}(i)\)\(i\) 后面 \(i\) 第一个直接相连的点,\(j - \mathrm{lpf}(j)\)\(j\) 之前与 \(j\) 第一个相邻的点,于是必要性显然。
充分性也可以根据其以及 \(i, i + \mathrm{lpf}(i)\) 奇偶性相反,\(j, j - \mathrm{lpf}(j)\) 奇偶性相反简单构造得到。

问题转化为给定 \(n\) 个区间,选取最大的带权子集使得区间两两相交且交点数量 \(> 1\) 或不在端点。

交的长度 \(> 0\) 的问题是简单的,直接枚举最后交中的一个点,覆盖该点的区间都选即可。

注意到区间只有两种,\(2 \nmid i\)\(i - \mathrm{lpf}(i), i + \mathrm{lpf}(i)\) 均为偶数,因此仅考虑奇数点区间交长度必然要么为 \(0\) 要么 \(> 1\).

于是可以直接将奇数点区间两端往里缩减 \(1\),此时转化为交长度 \(> 0\) 的问题,复杂度 \(\mathcal{O}(n)\).

F

二元生成函数 + 类 ZJOI 2019 开关,复杂度 \(\mathcal{O}((nm) ^ 2)\).

posted @ 2022-02-28 18:03  Achtoria  阅读(191)  评论(0编辑  收藏  举报