A14325 | Minimax
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Prefix function of string $t = t_1 t_2 \ldots t_n$ and position $i$ in it is defined as the length $k$ of the longest proper (not equal to the whole substring) prefix of substring $t_1 t_2 \ldots t_i$ which is also a suffix of the same substring.
For example, for string $t = $ abacaba the values of the prefix function in positions $1, 2, \ldots, 7$ are equal to $[0, 0, 1, 0, 1, 2, 3]$ .
Let $f(t)$ be equal to the maximum value of the prefix function of string $t$ over all its positions. For example, $f($ abacaba $) = 3$ .
You are given a string $s$ . Reorder its characters arbitrarily to get a string $t$ (the number of occurrences of any character in strings $s$ and $t$ must be equal). The value of $f(t)$ must be minimized. Out of all options to minimize $f(t)$ , choose the one where string $t$ is the lexicographically smallest.
For example, for string $t = $ abacaba the values of the prefix function in positions $1, 2, \ldots, 7$ are equal to $[0, 0, 1, 0, 1, 2, 3]$ .
Let $f(t)$ be equal to the maximum value of the prefix function of string $t$ over all its positions. For example, $f($ abacaba $) = 3$ .
You are given a string $s$ . Reorder its characters arbitrarily to get a string $t$ (the number of occurrences of any character in strings $s$ and $t$ must be equal). The value of $f(t)$ must be minimized. Out of all options to minimize $f(t)$ , choose the one where string $t$ is the lexicographically smallest.
输入格式
Each test contains multiple test cases. The first line contains the number of test cases $t$ ( $1 \le t \le 10^5$ ). Description of the test cases follows.
The only line of each test case contains string $s$ ( $1 \le |s| \le 10^5$ ) consisting of lowercase English letters.
It is guaranteed that the sum of lengths of $s$ over all test cases does not exceed $10^5$ .
The only line of each test case contains string $s$ ( $1 \le |s| \le 10^5$ ) consisting of lowercase English letters.
It is guaranteed that the sum of lengths of $s$ over all test cases does not exceed $10^5$ .
输出格式
For each test case print a single string $t$ .
The multisets of letters in strings $s$ and $t$ must be equal. The value of $f(t)$ , the maximum of prefix functions in string $t$ , must be as small as possible. String $t$ must be the lexicographically smallest string out of all strings satisfying the previous conditions.
The multisets of letters in strings $s$ and $t$ must be equal. The value of $f(t)$ , the maximum of prefix functions in string $t$ , must be as small as possible. String $t$ must be the lexicographically smallest string out of all strings satisfying the previous conditions.
输入输出样例
输入 #1
3 vkcup abababa zzzzzz
输出 #1
ckpuv aababab zzzzzz
A string $a$ is lexicographically smaller than a string $b$ if and only if one of the following holds:
- $a$ is a prefix of $b$ , but $a \ne b$ ;
- in the first position where $a$ and $b$ differ, the string $a$ has a letter that appears earlier in the alphabet than the corresponding letter in $b$ .
In the first test case, $f(t) = 0$ and the values of prefix function are $[0, 0, 0, 0, 0]$ for any permutation of letters. String ckpuv is the lexicographically smallest permutation of letters of string vkcup.
In the second test case, $f(t) = 1$ and the values of prefix function are $[0, 1, 0, 1, 0, 1, 0]$ .
In the third test case, $f(t) = 5$ and the values of prefix function are $[0, 1, 2, 3, 4, 5]$ .
- $a$ is a prefix of $b$ , but $a \ne b$ ;
- in the first position where $a$ and $b$ differ, the string $a$ has a letter that appears earlier in the alphabet than the corresponding letter in $b$ .
In the first test case, $f(t) = 0$ and the values of prefix function are $[0, 0, 0, 0, 0]$ for any permutation of letters. String ckpuv is the lexicographically smallest permutation of letters of string vkcup.
In the second test case, $f(t) = 1$ and the values of prefix function are $[0, 1, 0, 1, 0, 1, 0]$ .
In the third test case, $f(t) = 5$ and the values of prefix function are $[0, 1, 2, 3, 4, 5]$ .
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted