题解-CF778
CF778C Peterson Polyglot [*easy]
考虑对于每一个深度为 \(i\) 的询问,答案为所有 [\(dep = i\) 的结点的子树合并起来,子树合并时被删除的结点个数] 的和减去 \(dep = i\) 有儿子的结点数。
直接暴力 \(trie\) 合并即可。显然时间复杂度 \(\le \sum\limits_{u=1}^{n} siz_{u的轻儿子}\)
ac link
CF778D Parquet Re-laying [*hard]
考虑建立一个中转点,以 \(n \equiv 0 \pmod 2\) 为例。
这个中转点为 :
UUUUU
DDDDD
UUUUU
DDDDD
考虑遇到一个不符合答案的情况。遇到:
LR..
LR..
......
就直接旋转即可。
否则会遇到这种情况:
LR..
U....
D....
那么我们的任务是把那个
U.....
D.....
转成 LR....
。
于是就转化成了一个子问题。递归解决即可。
CF778E Selling Numbers [*medium]
不是很难,但是蒟蒻调了很久 /kk
和 CF1188D Make Equal 几乎一模一样
直接记录一下这一位对于进位的次数即可。\(dp_{i, j}\) 表示前 \(i - 1\) 个位的和,有 \(j\) 个数对第 \(i\) 位进了位。
转移的时候进位的一定是后 \(i\) 位的值最大的。
然后转移的时候只需要枚举这一位 \(A\) 是什么即可
因此直接对这些后缀进行排序即可。
这题并不需要把所有串接起来,直接利用上一次的排序值并在前面添加一个字符即可。