#P14547. [IO 2024 #3] 莫图努伊部落的语言
[IO 2024 #3] 莫图努伊部落的语言
题目描述
对我们来说,屏幕上当然显示的是说我们母语的角色,但莫图努伊部落的母语要复杂得多。
该语言总共有 个字母,每个字母对应的声音我们用数字 表示。不同的字母可能对应相同的声音。该语言中恰好有 个单词,每个单词都是这 个字母的任意子序列(单词中字母的顺序与字母表中的顺序一致)。
用 表示按字典序排列的第 个单词的 发音。即取该语言的所有单词,写出每个单词的声音序列,并按升序排列这些序列。这里我们认为单词 小于单词 ,如果要么 的声音序列是 声音序列的前缀,要么 中第一个不同的声音小于 中对应的声音。
你的任务是找到莫图努伊岛部落语言中发音最小的 个单词。由于这些单词的总长度可能过大,请改为输出这些单词的哈希值,其中单词 的哈希值为
$$h(s) = (a_{c_1} B^{k-1} + a_{c_2} B^{k-2} + \ldots + a_{c_{k-1}} B + a_{c_k}) \bmod M$$其中 和 是预先给定的参数。
输入格式
第一行输入包含整数 、、 和 ——分别表示字母表中的字母数量、你感兴趣的单词数量和哈希参数(;;)。
第二行列出 个整数 ——每个字母的声音编号()。
输出格式
对于按字典序排列最小的 个语言单词,依次输出它们发音的哈希值,每行一个。
2 3 1 5
1 2
1
3
2
3 4 2 3
1 3 1
1
1
0
2
5 6 23 1000
1 2 4 2 3
1
25
25
577
274
578
提示
在第一个样例中,单词的顺序为:、、。
在第二个样例中,单词的发音为:、、、、、。
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号