POJ题面:Sequence
题面大意:
给定 m m m 个序列,每个序列包含 n n n 个非负整数。
现在我们可以从每个序列中选取一个整数来新成一个包含有 n n n 个整数的新序列。
显然,我们可以得到 n m n^m nm 个新序列, n m n^m nm 个新序列的整数之和。
求出在这些新序列中,整数之和最小的一个新序列。(输出这个新序列)
思路:
我们可以先考虑 m = 2 m = 2 m=2 的情况。此时,我们有两个序列 { a 1 , a 2 , . . . , a n } \{ a_1,a_2,...,a_n \} { a1,a2,...,an} 和 { b 1 , b 2 , . . . , b n } \{ b_1,b_2,...,b_n\} { b1,b2,...,bn}。
如果直接组合,时间直接是 n 2 n^2 n2 的,再考虑 m m m 个序列,时间复杂度直接成 m n 2 mn^2 mn2,这很明显不现实。所以需要进行优化。
我们可以先将序列 a a a 从小到大进行一次排序,再和序列 b b b 进行合并分组:
b 1 + a 1 , b 1 + a 2 , . . . , b 1 + a n b 2 + a 1 , b 2 + a 2 , . . . , b 2 + a n . . . b n + a 1 , b n +