loj#P4781. 「RMI 2019」魔鬼的份额
「RMI 2019」魔鬼的份额
题目描述
题目译自 Romanian Master of Informatics 2019 Day1 T1 「Devil's Share」
给你一个数字 ,魔鬼想要从中分得属于他的那份。他会拿走这个数字中长度为 的最大子数字。你可以通过重新排列 中的数字来尽量减少魔鬼的份额。
具体来说,你手上有 个数字,这些数字的范围在 到 之间(包含 和 )。给定一个整数 ,你需要用手上的所有数字组成一个数字 ,使得 中长度为 的最大子字符串尽可能小。
说明: 的长度为 的子字符串是指由 中连续的 个数字按原有顺序组成的十进制整数。在数字 中,这样的子字符串总共有 个。
输入格式
输入包含多组数据。第一行包含一个整数 ,表示测试数据的组数。
每组输入数据包含两行,第一行包含一个整数 ,表示需要考虑的子字符串长度。第二行包含 个以空格分隔的整数: $(0 \leq D_{i}, D_{1}+D_{2}+\ldots+D_{9}=S, 1 \leq S \leq 10^5)$,其中 表示你手上有多少个数字 。
所有输入数据组的 值之和不超过 。
输出格式
对于每个测试样例,在单独的一行中输出你构造的数字 。
如果存在多个 都具有相同最小的长度为 的最大子字符串,你可以输出其中任意一个。
3
2
1 1 2 0 0 0 0 0 0
7
2 4 2 0 0 6 2 2 2
7
3 3 3 0 0 6 2 2 2
2313
62616236261623778899
623616236162361778899
样例中包含三组测试数据。
在第一个样例中,,你需要排列的数字是 1233
。一个最优的 是 2313,其长度为 的子字符串分别是 23
、31
和 13
,最大的是 31
。没有其他排列能使长度为 的最大子字符串比 31
更小。另一个同样最优的 是 3123
,因为它长度为 2
的最大子字符串也是 31
。
在第二个样例中,,你需要排列的数字是 11222233666666778899
。一个最优的 是 62616236261623778899
,其长度为 的最大子字符串是 6261623
。
在第三个样例中,,你需要排列的数字是 111222333666666778899
。一个最优的 是 623616236162361778899
,其长度为 的最大子字符串是 6236177
。
数据范围与提示
详细子任务附加限制及分值如下表所示。
子任务 | 附加限制 | 分值 |
---|---|---|
$0 \leq D_{1}, D_{2}, D_{3}, D_{4} \leq 3, D_{5}=D_{6}=\ldots=D_{9}=0, 1 \leq T \leq 1536$,不会有完全相同两组数据 | ||
无附加限制 |