题目描述
小 有一棵 个结点的有根树,根是 号结点,且每个结点最多有两个子结点。
定义结点 的权值为:
1.若 没有子结点,那么它的权值会在输入里给出,保证这类点中每个结点的权值互不相同。
2.若 有子结点,那么它的权值有 的概率是它的子结点的权值的最大值,有 的概率是它的子结点的权值的最小值。
现在小 想知道,假设 号结点的权值有 种可能性,权值第 小的可能性的权值是 ,它的概率为 ,求:
你需要输出答案对 取模的值。
输入格式
第一行一个正整数 ;
第二行 个整数,第 个整数表示第 个结点的父亲的编号,其中第 个结点的父亲为 ;
第三行 个整数,若第 个结点没有子结点,则第 个数为它的权值,否则第 个数为 ,保证 是个正整数。
输出格式
输出答案。
输入输出样例 #1
输入 #1
输出 #1
说明/提示
样例解释
1 号结点的权值有 的概率是 ,有 的概率是 ,所以答案是 。
数据范围
- 对于 的数据,有 ;
- 对于 的数据,有 ;
- 对于 的数据,有 ;
- 对于 的数据,有 ;
- 另有 的数据保证树的形态随机;
- 对于 的数据,有 ,。
对于所有数据,满足 ,所以易证明所有叶子的权值都有概率被根取到。
题解
我们设 为 节点出现 的概率。
设 是节点 的两个子节点, 为叶子结点的个数。
显然, 出现 的概率为
这个式子有关前缀和和后缀和,可以很容易用线段树合并的操作来进行转移。