#P12495. [集训队互测 2024] 链覆盖

    ID: 14053 远端评测题 1500ms 1024MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>动态规划 DP集训队互测2024O2优化动态规划优化

[集训队互测 2024] 链覆盖

背景

你的学弟向你请教这样一道题:

  • 给定一颗 nn 个点的有根树,初始所有点均为白色。

  • 你可以执行不超过 kk 次操作,每次操作为选定一个点,把它到根简单路径上的所有点涂成黑色。

  • 求你最终最多能涂黑多少点。对 k=1∼nk=1 \sim n 分别求解。 这当然不是什么难题,你很快向学弟解释清楚了这应该怎么做,他惊叹于做法的巧妙,然后满意地离开了。

你看着他离去的身影,想起两三年前,你第一次得知这道题怎么做时,也曾为这道题的解法赞叹过。但对于现在的你来说,这也并没有什么神奇之处,只是一个平凡的套路罢了。

但熟知的原题与结论并不一定真的就乏味无趣、无甚可观,这样想着,你记录下了这道题:

题目描述

  • 给定一颗 nn 个点的有根树,初始所有点均为白色。

  • 你可以执行不超过 kk 次操作,每次操作为选定一个点,把它到根简单路径上的所有点涂成黑色。

  • 求你最终最多能涂黑多少点。对 k=1∼nk=1 \sim n 分别求解。

记对于有标号有根树 TT,上述问题在 k=ik=i 时的答案为 ans(T,i)ans(T,i)。

给定 n,modn,mod,对所有 1≤k≤n,1≤m≤n1 \le k \le n,1 \le m \le n,计算有多少不同的 nn 个点以 11 为根的有标号树 TT 满足 ans(T,k)=mans(T,k)=m。答案对 modmod 取模。

两颗有标号以 11 为根的树被认为是不同的,当且仅当它们的边集不同。

输入格式

一行两个整数 n,modn,mod。

输出格式

输出 nn 行每行 nn 个整数,第 kk 行的第 mm 个整数表示满足 ans(T,k)=mans(T,k)=m 的不同的 nn 个点以 11 为根的有标号树 TT 的数量对 modmod 取模的结果。

2 998244353
0 1 
0 1
3 998244353
0 1 2 
0 0 3 
0 0 3
4 998244353
0 1 9 6 
0 0 1 15 
0 0 0 16 
0 0 0 16
5 998244353
0 1 40 60 24 
0 0 1 28 96 
0 0 0 1 124 
0 0 0 0 125 
0 0 0 0 125
6 998244353
0 1 195 560 420 120 
0 0 1 75 500 720 
0 0 0 1 75 1220 
0 0 0 0 1 1295 
0 0 0 0 0 1296 
0 0 0 0 0 1296

提示

本题使用捆绑测试,你只有通过一个子任务的所有测试点,才能获得这个子任务的分数。

Subtask n≤n \le 分值
11 55 11
22 1010 99
33 2020 1010
44 3232 1515
55 4040 55
66 5050 1515
77 6565 55
88 8080
99 120120 1515
1010 300300 2020

对于所有数据:1≤n≤3001 \le n \le 300,108≤mod≤1.05×10910^8 \le mod \le 1.05 \times 10^9,保证 modmod 是质数。