#3969. [USACO23OPEN] Moo Language B
[USACO23OPEN] Moo Language B
题目背景
FJ 对与奶牛更好地互动感兴趣,所以他决定学习 moo 语言!
题目描述
moo 语言与英语相似,但更为简单。单词只有四种类型:名词、及物动词、不及物动词和连词,每两个单词之间必须用空格隔开。标点符号仅包含逗号和句号,它会跟在单词后面,若该标点符号后面存在单词,则需要隔一个空格再放单词。
对于每个句子,都需要遵循以下格式中的一条:
- 名词+不及物动词。
- 名词+及物动词+名词(可以有多个)。及物动词后面必须有至少一个名词。除及物动词后面的第一个名词外,后面的每个名词前面都必须加一个逗号。
也可以在两个句子之间加一个连词,形成复合句,复合句不能与其他句子用连词连接。每一个句子(包括复合句)都必须以句号结尾。
FJ 的词库中有 个单词、 个逗号和 个句号。每个单词的使用次数不能超过这个单词在词库中出现的次数。现在,你要帮他输出几个符合以上要求的句子,使总单词数尽量多。
每个输入文件中共包含 组样例。
输入格式
第一行输入 ,表示样例组数。对于每组样例,格式如下:
第一行输入三个正整数 、 和 。
在接下来的 行,每行输入两个字符串。第一个字符串输入一个 FJ 可以用的单词(全为小写字母,长度为 至 ),第二个字符串为以下字符串中的任意一个,表示该单词的类型:
noun
(名词);transitive-verb
(及物动词);intransitive-verb
(不及物动词);conjunction
(连词)。
同一个单词可能在词库中出现多次,但是每次出现时它们的类型都相同。
输出格式
第一行输出组成符合以上要求的句子序列的最大单词数。
在第二行中,输出句子序列,使单词数最多。本题开启 SPJ,任何符合以上要求的句子序列均可通过。
请不要输出多余的空格,尤其是在每行末尾。