#L4235. 「NordicOI 2023」ChatNOI
「NordicOI 2023」ChatNOI
题目描述
题目译自 NordicOI 2023 T1 「ChatNOI」
Mary 对大型语言模型的能力感到着迷。随着聊天机器人和生成式 AI 的最新热潮,她决定设计自己的文本生成模型,称为 ChatNOI(Chat,但不太智能)。
该模型在由 个单词组成的文档上进行训练,它将学习识别单词序列中的模式。具体来说,对于文档中出现的每个不同的 个连续单词序列,模型将跟踪紧随这个序列的单词出现的频率。
示例说明
如果模型在文档上使用参数 进行训练,训练文档为:
row row to the fishing rocks
out in the ocean they go
a cow is sitting and rowing
and the sun rises
and the sun sets
but the cow and the boat are still there
模型将学习到:
row row后面跟一次单词toand the后面跟两次单词sun和跟一次单词boatthe sun后面跟一次单词rises和跟一次单词sets
我们称紧随特定序列的单词的频率为该单词的可能性。
句子质量评估
Mary 提出了句子质量的评估方法:她查看句子中的每个 个连续单词序列及其后面的单词,计算该单词紧随该序列的可能性。所有 个连续单词序列中的最小可能性就是该句子的质量。
继续上面的例子:
- 句子
cow and the sun rises的质量为cow and后面跟the的可能性为and the后面跟sun的可能性为the sun后面跟rises的可能性为- 最小值为
- 句子
and the sun的质量为 - 句子
row to the boat的质量为
任务要求
现在 Mary 请你使用该模型生成句子。给定句子中的前 个单词和一个数字 ,请你完成句子的最后 个单词,使其根据训练好的模型具有尽可能高的质量。
输入格式
第一行包含两个整数 和 ,分别表示训练文档中的单词数和训练参数 。
第二行包含 个单词 ,即训练文档。每个单词由 到 个英文小写字母组成。
第三行包含一个整数 ,表示查询数量。
接下来 行,第 行描述第 个查询:
- 首先有一个整数 ,表示应该生成多少个单词来完成句子
- 然后是由 个单词 组成的序列,即句子的初始部分
每个单词都保证在训练文档中出现过。
令 表示所有查询中 的总和。保证 最多为 。
输出格式
输出 行,其中第 行包含生成的单词,使得第 个查询的完整句子具有尽可能高的质量。你只可以使用训练文档中出现的单词。如果对于给定的查询有多个可能的方案,你可以输出其中的任何一个。
样例 1
输入:
13 2
ullen dullen doff kikke lane koff koffe lane bikke bane ullen dullen doff
3
1 ullen dullen
2 ullen dullen
3 ullen dullen
输出:
doff
doff kikke
doff kikke lane
样例 2
输入:
8 1
buffalo buffalo buffalo buffalo buffalo buffalo buffalo buffalo
1
7 buffalo
输出:
buffalo buffalo buffalo buffalo buffalo buffalo buffalo
样例 3
输入:
16 1
have you not heard about the bird the bird bird bird the bird is the word
8
1 have
1 you
1 not
1 heard
1 about
1 the
1 bird
1 is
输出:
you
not
heard
about
the
bird
bird
the
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 1 | 5 | , , , |
| 2 | 7 | , , , |
| 3 | 17 | , , , |
| 4 | 18 | , , , |
| 5 | 24 | , , , |
| 6 | 16 | , , , |
| 7 | 13 | , , , |