Sequence 给定m个数字序列,每个序列包含n个非负整数。我们从每一个序列中选取一个数字组成一个新的序列,显然一共可以构造出nm个新序列。接下来我们对每一个新的序列中的数字进行求和,一共会得到nm个和,请找出最小的n个和 时间限制:3000 内存限制:65536 输入 输入的第一行是一个整数T,表示测试用例的数量,接下来是T个测试用例的输入 每个测试用例输入的第一行是两个正整数m(0 < m <= 100)和n(0 < n <= 2000),然后有m行,每行有n个数,数字之间用空格分开,表示这m个序列 序列中的数字不会大于10000 输出 对每组测试用例,输出一行用空格隔开的数,表示最小的n个和 样例输入 1 2 3 1 2 3 2 2 3 样例输出 3 3 4
正确答案:参考程序(C++):多路归并求最小n个和(同4506)。每序列排序,用优先队列(堆)维护,取最小和并替换继续。样例输出3 3 4。核心:堆多路归并。
试卷来源:202209 青少年等级考试C/C++真题七级