Luogu6383 『MdOI R2』Resurrection
题意:给出一棵
保证对于任意一个节点
按照如下步骤生成一张包含
选取一个
在进行第
求对于给定的树
答案对
题目中的性质是说,若以
考虑简化图的构造过程。我们发现,对于树上的一个联通块,最大权值一定在最浅点取得,于是可以改为“将两个联通块的最浅点连边”。
只有这里用到了关于编号的性质,所以我们可以把编号的性质忘掉,保留这一条规则作为代替,也是等价的。
从该规则出发,不难归纳证明:最终产生的
实际上,
可以看做按照排列 进行“边分治” 的产物,由于每次连接两个连通块的最浅点,故连边方法唯一,因此问题对应到本质不同边分治方案数计数。 但实际上这个模型比原来
的生成方式更复杂了,故不从此处出发考虑。
现在问题仍然较为复杂,随机作出前提假设,发掘一些性质:
必要条件:若有连边
,由于两个联通块之间的边已经被切断,则不可能再有和 交叉的连边,如图:
而对于一组不交叉(只有包含或相离)的连边方案,总能够造出对应的边分治顺序。
每次选取浅侧最浅且没有被其他边包含的边断掉,这样就能转化为子问题,归纳即可证明。
于是,问题转化为:每个点都会向祖先连边,且连边不交叉,求方案数。
考虑树形
子树集合是一棵树,在处理“路径不交”时较为复杂。而祖先集合是一条路径,更为简单。
于是考虑设
边界:当
答案:
转移:
枚举
不难用前缀和优化做到