#P9536. [YsOI2023] Prüfer 序列

    ID: 8424 远端评测题 2000ms 150~512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>动态规划,dp洛谷原创O2优化洛谷月赛

[YsOI2023] Prüfer 序列

题目背景

Ysuperman 模板测试的计数题。

众所周知,Prüfer 序列几乎没有在正赛中出现过,所以它需要出现在洛谷月赛中。

题目描述

众所周知,一棵 nn 个点的有标号无根树与他的 Prüfer 序列一一对应。如果你不知道 Prüfer 序列指的是什么,可以参考下面提示说明中对 Prüfer 序列的解释。

现在给你一个长度为 mm 的正整数序列 aa,其中 ai[1,n]a_i\in[1,n]。等概率随机选择这个序列的一个长度为 n2n-2 的子序列(只要选择下标不同就认为两个子序列不同)作为 Prüfer 序列构造得到一棵树 TT,对于所有 1i<n1\le i<n,你需要求出 dist(i,n)\mathrm{dist}(i,n) 的期望(dist(u,v)\mathrm{dist}(u,v) 定义为 u,vu,v 两点简单路径的边数)。

答案对 109+710^9+7 取模。

输入格式

输入第一行两个正整数 n,mn,m

第二行 mm 个整数表示序列 aa,保证 1ain1\le a_i\le n

输出格式

输出 n1n-1 个非负整数,第 ii 个整数表示 dist(i,n)\mathrm{dist}(i,n) 的期望。

4 3
2 4 3

2 666666673 1
6 4
4 6 5 2
4 1 1 3 2
10 12
6 9 2 10 1 5 5 9 10 7 8 3

585858594 60606064 8080810 834343444 638383846 785858595 913131322 595959602 286868692

提示

对 Prüfer 序列的解释

对于一棵给定的无根有标号树,Prüfer 序列的构建过程如下:每次选择一个编号最小的叶结点并删掉它,然后在序列中记录下它连接到的那个结点,重复 n2n-2 次后就只剩下两个结点,此时记录下来的那个序列就是这棵无根有标号树的 Prüfer 序列。

我们可以证明,一棵结点数量大于 11 的无根有标号树和一个 Prüfer 序列是一一对应的,并且任意一个长度为 n2n-2 每个数取 [1,n][1,n] 范围内的整数的 Prüfer 序列都有唯一对应它的树,所以同样的,我们也可以根据一个 Prüfer 序列还原出一棵树。

有关 Prüfer 序列更加详细的内容,你可以参考 OI wiki 上关于 Prüfer 序列的描述

样例 1 解释

共有三种等可能选择的子序列:2,42,42,32,34,34,3

  1. 2,42,4 对应的树为一条链 12431-2-4-3,其中 1,2,31,2,344 的距离分别为 2,1,12,1,1
  2. 2,32,3 对应的树为一条链 12341-2-3-4,其中 1,2,31,2,344 的距离分别为 3,2,13,2,1
  3. 4,34,3 对应的树为一条链 14321-4-3-2,其中 1,2,31,2,344 的距离分别为 1,2,11,2,1

所以 dist(1,4)\mathrm{dist}(1,4) 期望为 (2+3+1)/3=2(2+3+1)/3=2dist(2,4)\mathrm{dist}(2,4) 期望为 (1+2+2)/3=5/3666666673(mod109+7)(1+2+2)/3=5/3\equiv 666666673\pmod{10^9+7}dist(3,4)\mathrm{dist}(3,4) 期望为 (1+1+1)/3=1(1+1+1)/3=1

样例 2 解释

仅有一种可能的子序列 4,6,5,24,6,5,2,对应的树为一条链 1452631-4-5-2-6-31,2,3,4,51,2,3,4,566 的距离依次为 4,1,1,3,24,1,1,3,2,即为答案。

数据范围

本题共 2020 个测试点:

测试点编号 nn mm
11 =4=4 =6=6
22 =8=8 =15=15
33 =10=10 =20=20
44 =50=50
55 =200=200
66 =1000=1000
77 =1750=1750
88 =2500=2500
99 =11=11 =500=500
1010 =1000=1000
1111 =12=12 =250=250
1212 =375=375
1313 =400=400
1414 =13=13 =80=80
1515 =120=120
1616 =160=160
1717 =200=200
1818 =14=14 =60=60
1919 =90=90
2020 =15=15 =40=40

另外,对于所有数据,保证 1ain1\le a_i\le n

请注意,前 1919 个测试点空间限制为 512MB512\rm{MB},最后一个点空间限制为 150MB150\rm{MB}