CF1182C Beautiful Lyrics
题目描述
给定 $n$ 个单词,每个单词均由小写字母组成,且每个单词至少包含一个元音字母。你需要从这些单词中选择若干个,尽可能多地组成“优美歌词”。
每首歌词由两行组成,每行包含两个单词,单词之间用空格隔开。
一首歌词被称为“优美”,当且仅当满足以下所有条件:
- 第一行第一个单词的元音字母数等于第二行第一个单词的元音字母数。
- 第一行第二个单词的元音字母数等于第二行第二个单词的元音字母数。
- 第一行的最后一个元音字母与第二行的最后一个元音字母相同(注意,元音字母后面可以还有辅音字母)。
这里,字母 "a"、"e"、"o"、"i"、"u" 被认为是元音字母,"y" 永远不是元音字母。
例如,下面是一首优美歌词:
"hello hellooowww"
"whatsup yowowowow"
因为 "hello" 和 "whatsup" 都有两个元音字母,"hellooowww" 和 "yowowowow" 都有四个元音字母(注意 "y" 不是元音),且每行的最后一个元音字母都是 "o"。
下面是一个不优美的歌词示例:
"hey man"
"iam mcdic"
因为 "hey" 和 "iam" 的元音字母数不同,且两行的最后一个元音字母也不同(第一行为 "a",第二行为 "i")。
你可以使用每个单词的次数不超过其在输入中出现的次数。例如,如果某个单词出现了三次,则最多可以使用三次。
请问最多可以组成多少首优美歌词?输出任意一种方案。
输入格式
第一行包含一个整数 $n$($1 \le n \le 10^{5}$),表示单词数量。
接下来的 $n$ 行,每行包含一个由小写字母组成的字符串 $s_i$,表示第 $i$ 个单词。保证所有单词的总长度不超过 $10^6$,且每个单词至少包含一个元音字母。
输出格式
第一行输出 $m$,表示最多可以组成的优美歌词数量。
接下来 $2m$ 行,每两行输出一首优美歌词(每行两个单词,单词之间用空格隔开)。
如果有多种方案,输出任意一种均可。
说明/提示
在第一个样例中,输出中的优美歌词是可能的答案之一。以输出的第一首歌词为例,"about proud hooray round" 能组成一首优美歌词,因为 "about" 和 "hooray" 的元音字母数相同,"proud" 和 "round" 的元音字母数相同,且两行的最后一个元音字母也相同。而 "codeforces" 不能与其它单词组成优美歌词。
在第二个样例中,无法用给定的单词组成任何优美歌词。
在第三个样例中,单词 "same" 最多可以使用三次。
由 ChatGPT 4.1 翻译