310970: CF1915D. Unnatural Language Processing

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:2 Solved:0

Description

D. Unnatural Language Processingtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output

Lura was bored and decided to make a simple language using the five letters $\texttt{a}$, $\texttt{b}$, $\texttt{c}$, $\texttt{d}$, $\texttt{e}$. There are two types of letters:

  • vowels — the letters $\texttt{a}$ and $\texttt{e}$. They are represented by $\textsf{V}$.
  • consonants — the letters $\texttt{b}$, $\texttt{c}$, and $\texttt{d}$. They are represented by $\textsf{C}$.
There are two types of syllables in the language: $\textsf{CV}$ (consonant followed by vowel) or $\textsf{CVC}$ (vowel with consonant before and after). For example, $\texttt{ba}$, $\texttt{ced}$, $\texttt{bab}$ are syllables, but $\texttt{aa}$, $\texttt{eda}$, $\texttt{baba}$ are not.

A word in the language is a sequence of syllables. Lura has written a word in the language, but she doesn't know how to split it into syllables. Help her break the word into syllables.

For example, given the word $\texttt{bacedbab}$, it would be split into syllables as $\texttt{ba.ced.bab}$ (the dot $\texttt{.}$ represents a syllable boundary).

Input

The input consists of multiple test cases. The first line contains an integer $t$ ($1 \leq t \leq 100$) — the number of test cases. The description of the test cases follows.

The first line of each test case contains an integer $n$ ($1 \leq n \leq 2 \cdot 10^5$) — the length of the word.

The second line of each test case contains a string consisting of $n$ lowercase Latin characters  — the word.

All words given are valid words in the language; that is, they only use the letters $\texttt{a}$, $\texttt{b}$, $\texttt{c}$, $\texttt{d}$, $\texttt{e}$, and each word is made up of several syllables.

The sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.

Output

For test case, output a string denoting the word split into syllables by inserting a dot $\texttt{.}$ between every pair of adjacent syllables.

If there are multiple possible splittings, output any of them. The input is given in such a way that at least one possible splitting exists.

ExampleInput
6
8
bacedbab
4
baba
13
daddecabeddad
3
dac
6
dacdac
22
dababbabababbabbababba
Output
ba.ced.bab
ba.ba
dad.de.ca.bed.dad
dac
dac.dac
da.bab.ba.ba.bab.bab.ba.bab.ba

Output

题目大意:
Lura 创造了一种简单的语言,该语言只使用五个字母:a、b、c、d、e。字母分为两种:元音(a 和 e,用 V 表示)和辅音(b、c 和 d,用 C 表示)。该语言有两种音节:CV(辅音后跟元音)和 CVC(元音前后各有一个辅音)。例如,ba、ced、bab 是音节,但 aa、eda、baba 不是。一个单词是由音节序列组成的。Lura 写了一个单词,但她不知道如何将其分解为音节。你的任务是帮助她将单词分解为音节。

输入数据格式:
输入包含多个测试用例。第一行包含一个整数 t(1 ≤ t ≤ 100)——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(1 ≤ n ≤ 2 × 10^5)——单词的长度。
第二行包含一个由 n 个小写拉丁字母组成的字符串——单词。
所有给出的单词都是语言中的有效单词;也就是说,它们只使用字母 a、b、c、d、e,并且每个单词都由几个音节组成。
所有测试用例的 n 之和不超过 2 × 10^5。

输出数据格式:
对于每个测试用例,输出一个字符串,通过在每对相邻音节之间插入一个点 . 来表示分解为音节的单词。
如果有多种可能的分解方式,输出其中任意一种。输入保证至少存在一种可能的分解方式。

示例:
输入:
```
6
8
bacedbab
4
baba
13
daddecabeddad
3
dac
6
dacdac
22
dababbabababbabbababba
```
输出:
```
ba.ced.bab
ba.ba
dad.de.ca.bed.dad
dac
dac.dac
da.bab.ba.ba.bab.bab.ba.bab.ba
```题目大意: Lura 创造了一种简单的语言,该语言只使用五个字母:a、b、c、d、e。字母分为两种:元音(a 和 e,用 V 表示)和辅音(b、c 和 d,用 C 表示)。该语言有两种音节:CV(辅音后跟元音)和 CVC(元音前后各有一个辅音)。例如,ba、ced、bab 是音节,但 aa、eda、baba 不是。一个单词是由音节序列组成的。Lura 写了一个单词,但她不知道如何将其分解为音节。你的任务是帮助她将单词分解为音节。 输入数据格式: 输入包含多个测试用例。第一行包含一个整数 t(1 ≤ t ≤ 100)——测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 n(1 ≤ n ≤ 2 × 10^5)——单词的长度。 第二行包含一个由 n 个小写拉丁字母组成的字符串——单词。 所有给出的单词都是语言中的有效单词;也就是说,它们只使用字母 a、b、c、d、e,并且每个单词都由几个音节组成。 所有测试用例的 n 之和不超过 2 × 10^5。 输出数据格式: 对于每个测试用例,输出一个字符串,通过在每对相邻音节之间插入一个点 . 来表示分解为音节的单词。 如果有多种可能的分解方式,输出其中任意一种。输入保证至少存在一种可能的分解方式。 示例: 输入: ``` 6 8 bacedbab 4 baba 13 daddecabeddad 3 dac 6 dacdac 22 dababbabababbabbababba ``` 输出: ``` ba.ced.bab ba.ba dad.de.ca.bed.dad dac dac.dac da.bab.ba.ba.bab.bab.ba.bab.ba ```

加入题单

上一题 下一题 算法标签: