Loading

题解-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....

于是就转化成了一个子问题。递归解决即可。

ac link

CF778E Selling Numbers [*medium]

不是很难,但是蒟蒻调了很久 /kk

CF1188D Make Equal 几乎一模一样

直接记录一下这一位对于进位的次数即可。\(dp_{i, j}\) 表示前 \(i - 1\) 个位的和,有 \(j\) 个数对第 \(i\) 位进了位。

转移的时候进位的一定是后 \(i\) 位的值最大的。

然后转移的时候只需要枚举这一位 \(A\) 是什么即可

因此直接对这些后缀进行排序即可。

这题并不需要把所有串接起来,直接利用上一次的排序值并在前面添加一个字符即可。

ac link

posted @ 2021-01-11 18:40  zhoukangyang  阅读(310)  评论(0编辑  收藏  举报