AT_agc068_d.[AGC068D] Sum of Hash of Lexmin
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一棵以 1 为根、包含 N 个顶点的有根树 T,顶点编号为 1 到 N。顶点 1 是根,对于每个 2≤i≤N,顶点 i 的父节点为 Pi(Pi<i)。
对于 1 到 N 的一个排列 x=(x1,x2,⋯,xN),判断它是否为良好排列的方法如下:
- 对于排列 x,可以进行如下操作:
- 选择排列中相邻的两个元素 u,v,如果 u,v 在树 T 上存在祖先-子孙关系(无论谁是祖先谁是子孙均可),则可以交换 u,v 的位置。
- 如果经过若干次(可以为 0 次)上述操作,能够得到一个字典序严格小于初始排列的排列,则 x 不是良好排列。否则,x 是良好排列。
给定正整数 B。对于排列 x,定义 hash(x)=∑1≤i≤NBi−1×xi。
请计算所有良好排列 x 的 hash(x) 之和,并对 998244353 取模后输出。
数列的字典序定义如下:设 S=(S1,S2,…,S∣S∣),T=(T1,T2,…,T∣T∣),则 S 的字典序小于 T 当且仅当满足以下两条之一:
- ∣S∣<∣T∣ 且 (S1,S2,…,S∣S∣)=(T1,T2,…,T∣S∣)。
- 存在整数 1≤i≤min{∣S∣,∣T∣},使得
- (S1,S2,…,Si−1)=(T1,T2,…,Ti−1),
- Si<Ti。
输入格式
输入为一行,格式如下:
N B P2 P3 ⋯ PN
输出格式
输出答案。
输入输出样例
输入#1
3 100 1 1
输出#1
50502
输入#2
5 100 1 2 3 4
输出#2
504030201
输入#3
10 248730679 1 2 1 2 5 6 1 8 1
输出#3
856673861
输入#4
20 480124393 1 2 3 2 3 4 3 8 3 4 11 10 4 14 15 12 17 18 19
输出#4
488941820
说明/提示
数据范围
- 2≤N≤100
- 1≤B<998244353
- 1≤Pi<i(2≤i≤N)
- 输入的所有值均为整数
样例解释 1
例如,x=(3,1,2) 不是良好排列。因为可以交换 3,1(它们在树上有祖先-子孙关系),得到 x=(1,3,2),其字典序更小。在本样例中,良好排列为 x=(1,2,3) 和 x=(1,3,2) 共 2 个。因此,hash((1,2,3))+hash((1,3,2))=30201+20301=50502,输出 50502。
样例解释 2
在本样例中,任意两个顶点都存在祖先-子孙关系。因此,唯一的良好排列为 x=(1,2,3,4,5)。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?