专栏文章
题解:CF251E Tree and Table
CF251E题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min78mui
- 此快照首次捕获于
- 2025/12/01 21:42 3 个月前
- 此快照最后确认于
- 2025/12/01 21:42 3 个月前
题解
注意到树的度数不超过 。
当树是一条链时,分类讨论,一定是从某点开始走到头,拐回来走一段之后开始走折线,简单讨论后发现答案是 ,注意链可以翻转,翻转后算不同的方案。
对于一般情况,先放入一个三度点,设其为树根。
当根存在一个儿子是叶子时,两侧被划分为了两个子问题,否则枚举儿子放在哪边,也是两个子问题。
容易发现我们有两种不同的子问题:
- 矩形左上(或左下)有一个点,要用这个点的子树铺成一个矩形。
- 矩形左上和左下各有一个点,要用这两个点的子树铺成一个矩形。
设第一种为 ,第二种为 。
先讨论 (假设 在左上)。
-
如果 没有儿子,则无解。
-
如果 ,答案为 。
-
如果 有两个儿子,则枚举两个儿子是怎么放置的,设放在下面的为 ,右边的为 。
- 当 的儿子个数为 ,答案加上 。
- 否则, 的儿子个数必为 ,答案加上 。
-
如果 有一个儿子:
- 若子树 为一条链,答案为 。
- 若 放在下面,答案加上 。
- 否则找到最浅的有两个儿子的点,设其为 ,一直直走直到遇到这个点停止,枚举哪个点向下拐。
- 如果向下拐的点(设其为 )有一个儿子,判断一下它能不能把第二行的前缀填满,如果可以,答案加上 。
- 否则,枚举一下哪个儿子(设其为 )能把第二行的前缀填满,如果可以,答案加上的 。
再讨论 。
- 如果 没有儿子,答案为 。
- 如果 各有一个儿子,答案为 。
- 否则,设 有一个儿子,答案为 。
复杂度看似 ,但是提交后直接过了。
因为 被调用时,两个点的深度差不超过 ,且在 中被调用时,两点到 的距离是 的,每次 往后转移只有一个后继,树的节点度数也是 的,因此 的总状态是 的。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...