NOI2020 Day2 T2 超现实树 题解

题目链接:https://www.luogu.com.cn/problem/P6776

前言

作为一个APIO只能得40分的蒟蒻,参加了NOI结果也是非常的惨,具体就不提了。

Day2 T2 超现实树是一道我思考了很多的题,Day2的大部分时间花在上面。但我依旧没有得到正解。于是,在赛后,查了题解,又思考了很久,终于想明白了。些这篇题解主要是帮助和我刚开始陷入了同样的思维怪圈,因此一直没想明白这题的人。

思路与证明

  1. 考虑证明:在所有可能被生成或输入的树中,只有一种树需要被考虑到,称之为“链树”。它满足 m i n ( s i z e [ l s ] , s i z e [ r s ] ) < = 1 min(size[ls],size[rs])<=1 min(size[ls],size[rs])<=1,也就是左右子树大小的最小值不超过1,可以理解为一条链上长出若干个叶子结点(当然,也可以是0个叶子结点)。
  2. 满足了上面的性质,就只需要考虑输入数据中的链树了,也只需要设法生长得到无数棵链树即可。

第一部分 证明只有链树是有用的

  1. 证明输入的数据中我们只需要使用链树,其余的可以忽略。
  2. 证明 g r o w ( T ) grow(T) grow(T)是几乎完备的,等价于只有有限个链树不可以被生长得到。

第一条 证明:
假如有一棵树不是链树,那么可以它的左子树或右子树砍掉使它成为一棵链树,那么这棵链树可以通过生长它没被砍掉的那个子树上的链树,从而得到无数棵原树所不能得到的树(链树)。由于本来就有无数棵树不能被生长得到,现在还有无数棵树不能被生长得到,所以得出这棵树没有任何贡献的结论。

一开始我总是想不通这个结论,还举出了这个反例:
029.png
031.png032.png

显然这三棵树都不是链树。我们来看看它们共同对应的链树。
030.png

看上去,这三棵树似乎可以完全取代他们砍掉一半成为的链树,但其实他们不行。看这最后一棵树,结点4和3是叶子结点,可以生长。这棵树从4和3生长出去的所有树都是前三棵树所不能长出的。有无数棵树(链树)是不能得到的。
综上,可以说任何结构,任何数量的非链树的树,都比不上一颗链树,因为链树有无数颗非链树所不能生长得到的树(链树)。

第二条 先从无限颗树不在 g r o w ( T ) grow(T) grow(T)中推出无限棵链树不在 g r o w ( T ) grow(T) grow(T)中,从无限颗链树不在 g r o w ( T ) grow(T) grow(T)中推出无限棵树不在 g r o w ( T ) grow(T) grow(T)中,总而证明等价关系。

假设无限棵树不在 g r o w ( T ) grow(T) grow(T),把每一棵树 T T T的左或右子树砍掉,或换成一个叶子结点,得出的这棵树 T ’ T’

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值