Luogu6383 『MdOI R2』Resurrection

题意:给出一棵 个点的树 ,边编号为

保证对于任意一个节点 ,从 号点的简单路径都不经过任何编号小于 的点。

按照如下步骤生成一张包含 个节点的无向图

选取一个 的排列 ,然后依次进行 次操作。

在进行第 次操作时,首先删除树 中编号为 的边 ,然后,记 分别为当前树 中与 联通的所有点中,编号最大的点,并在图 号点和 号点之间连一条边。

求对于给定的树 ,按上述方式一共可以生成多少种本质不同的图 。图 本质不同当且仅当存在 满足在 中不存在边 ,而 中存在。

答案对 取模,,时限


题目中的性质是说,若以 点为根,则所有向下的路径都是单降的。

考虑简化图的构造过程。我们发现,对于树上的一个联通块,最大权值一定在最浅点取得,于是可以改为“将两个联通块的最浅点连边”。

只有这里用到了关于编号的性质,所以我们可以把编号的性质忘掉,保留这一条规则作为代替,也是等价的。

从该规则出发,不难归纳证明:最终产生的 是一棵树。

实际上, 可以看做按照排列 进行“边分治” 的产物,由于每次连接两个连通块的最浅点,故连边方法唯一,因此问题对应到本质不同边分治方案数计数。

但实际上这个模型比原来 的生成方式更复杂了,故不从此处出发考虑。


现在问题仍然较为复杂,随机作出前提假设,发掘一些性质:

  • 必要条件:若有连边 ,由于两个联通块之间的边已经被切断,则不可能再有和 交叉的连边,如图:

而对于一组不交叉(只有包含或相离)的连边方案,总能够造出对应的边分治顺序。

每次选取浅侧最浅且没有被其他边包含的边断掉,这样就能转化为子问题,归纳即可证明。

于是,问题转化为:每个点都会向祖先连边,且连边不交叉,求方案数。


考虑树形 ,这里我们有两种方向,第一种是考虑子树向自己连的边,一种是考虑祖先向自己连的边。

子树集合是一棵树,在处理“路径不交”时较为复杂。而祖先集合是一条路径,更为简单。

于是考虑设 表示 的祖先有 个点可以向下连边,子树中的连边方案数。

边界:当 是叶子时,

答案:

转移:

枚举 与祖先中从高到低的第几个连边,若与第 个连边,则连完后还能向下连的有祖先 以及 自己,共 个。

不难用前缀和优化做到