#HK4781. 「RMI 2019」Devil's Share

「RMI 2019」Devil's Share

题目描述

题目译自 Romanian Master of Informatics 2019 Day1 T1 「Devil's Share

给你一个数字 XX,魔鬼想要从中分得属于他的那份。他会拿走这个数字中长度为 KK 的最大子数字。你可以通过重新排列 XX 中的数字来尽量减少魔鬼的份额。

具体来说,你手上有 SS 个数字,这些数字的范围在 1199 之间(包含 1199)。给定一个整数 KK (1KS)(1 \leq K \leq S),你需要用手上的所有数字组成一个数字 XX,使得 XX 中长度为 KK 的最大子字符串尽可能小。

说明XX 的长度为 KK 的子字符串是指由 XX 中连续的 KK 个数字按原有顺序组成的十进制整数。在数字 XX 中,这样的子字符串总共有 SK+1S-K+1 个。

输入格式

输入包含多组数据。第一行包含一个整数 TT (1T5105)(1 \leq T \leq 5\cdot 10^5),表示测试数据的组数。

每组输入数据包含两行,第一行包含一个整数 KK,表示需要考虑的子字符串长度。第二行包含 99 个以空格分隔的整数:D1,D2,,D9D_{1}, D_{2}, \ldots, D_{9} $(0 \leq D_{i}, D_{1}+D_{2}+\ldots+D_{9}=S, 1 \leq S \leq 10^5)$,其中 DiD_{i} 表示你手上有多少个数字 ii

所有输入数据组的 SS 值之和不超过 10610^6

输出格式

对于每组测试数据,在单独的一行中输出你构造的数字 XX

如果存在多个 XX 都具有相同最小的长度为 KK 的最大子字符串,你可以输出其中任意一个。

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

样例中包含三组测试数据。

在第一个样例中,K=2K=2,你需要排列的数字是 1233。一个最优的 XX 是 2313,其长度为 22 的子字符串分别是 233113,最大的是 31。没有其他排列能使长度为 22 的最大子字符串比 31 更小。另一个同样最优的 XX3123,因为它长度为 2 的最大子字符串也是 31

在第二个样例中,K=7K=7,你需要排列的数字是 11222233666666778899。一个最优的 XX62616236261623778899,其长度为 77 的最大子字符串是 6261623

在第三个样例中,K=7K=7,你需要排列的数字是 111222333666666778899。一个最优的 XX623616236162361778899,其长度为 77 的最大子字符串是 6236177

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 $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$,不会有完全相同两组数据 1313
22 K=2K=2 1414
33 D3=D4==D9=0D_{3}=D_{4}=\ldots=D_{9}=0 2929
44 无附加限制 4444