Codeforces Round 1106 (Div. 2) 题解
比赛链接。
感觉每道题都比 div2 应有的难度较低些?
A Another Puzzle from Papyrus
记 \(a\) 排序后为 \(a'\)。
无解的情况在于 \(\exists a'_i < b_i\)。
不然代价即为 \(\sum a_i - \sum b_i\)。
再判断是否存在 \(a_i<b_i\),确定是否加上排序的代价 \(c\) 即可。
时间复杂度 \(O(nlogn)\)。
AC代码。
B Crimson Triples
当 \(\gcd(\operatorname{lcm}\)\(^{}\)\((a, b), \operatorname{lcm}(b, c)) = \gcd(a, c)\) 时,满足 \(b \mid a\) 且 \(b \mid c\)。
在质因子视角下容易理解,对于某个质因子 \(p\) 满足 \(a\) 中 \(p\) 的指数是 \(k_1\),\(c\) 中是 \(k_2\),则 \(b\) 中一定小于 \(\operatorname{min}(k_1,k_2)\)。
只要枚举 \(b\),符合条件的 \(a,c\) 组数就是 \(b\) 的倍数的平方,即 \(\lfloor \frac{n}{b} \rfloor^2\)。
时间复杂度 \(O(n)\)。
AC代码。
C Village Guilds
显然对于某个节点,它子树里同一深度的点可以视作一样的。
考虑某层深度何时能取到,不难发现取不到的条件当且仅当这层点全来自于一个儿子(会在儿子处就算到)。
所以只要统计一下每个儿子子树的最大和次大深度,到次大深度的层一定能够取到。
时间复杂度 \(O(n)\)。
AC代码。
D Storming Arasaka
在质因子视角下,对于 \(n = \prod p_i^{k_i}\)。
所有质因数的幂,需要单独一层。
若质因数有 \(m\) 种,还需要 \(m\) 层。
因此至少需要 \(\sum k_i + m\) 层。
可以构造证明此解可行:对于某个因数 \(m = \prod p_i^{c_i}\),有 \(q\) 种不同质因数,将它放到 \(\sum c_i + q - 1\) 层。
每一层也存在合法的链。
时间复杂度 \(O(nlogn)\)。
E Cake Trial
考虑将 \(\texttt{F}\) 当做 \(1\),\(\texttt{T}\) 当做 \(0\)。
一个串的错误就是总 \(\texttt{F}\) 数减去(选中区间的 \(\texttt{F}\) 减去 \(\texttt{T}\)),也就是总 \(\texttt{F}\) 数减去最大子段和。
考虑 \(dp\)。
设 \(dp_{i,j,k}\) 表示考虑前 \(i\) 个字符,共有 \(j\) 个 \(\texttt{F}\),当前结尾的最大子段和是 \(k\) 的状态下,最小的最大子段和。
根据第 \(i\) 个字符填什么,进行状态转移就好。
答案就是 \(\operatorname{max} (j-dp_{n,j,k})\)。

浙公网安备 33010602011771号