#P1505. Copying Books

Copying Books

题目描述

在印刷术发明之前,书籍的复制工作异常艰难。所有内容都需要由所谓的抄写员手工誊写。抄写员拿到一本书后,往往需要数月才能完成抄录。15世纪最著名的抄写员之一是Xaverius Endricus Remius Ontius Xendrianus(简称Xerox)。无论如何,这份工作既繁琐又枯燥。唯一的提速方法就是雇佣更多抄写员。

某剧院剧团想要排演著名的古典悲剧。这些剧本被分成了多本书籍,演员们自然需要更多副本。于是他们雇佣了大量抄写员来复制这些书籍。假设现在有mm本书(编号11mm),每本的页数可能不同(p1,p2,...,pmp_1, p_2, ..., p_m),需要为每本书制作一个副本。任务是将这些书分配给kk个抄写员(kmk \leq m)。每本书只能分配给一个抄写员,且每个抄写员必须分配到连续的书籍序列。也就是说,存在一个递增序列0=b0<b1<b2,...<bk1bk=m0 = b_0 < b_1 < b_2, ... < b_{k-1} \leq b_k = m,使得第ii个抄写员分配到编号从bi1+1b_{i-1}+1bib_i的书籍。完成所有书籍复制的时间取决于分配到最多工作的抄写员。因此,我们的目标是最小化单个抄写员分配到的最大页数。任务是找到最优分配方案。

输入格式

输入包含NN个测试用例。第一行仅包含正整数NN。随后是各测试用例,每个用例包含两行:

  • 第一行:两个整数mmkk1km5001 \leq k \leq m \leq 500
  • 第二行:mm个正整数p1,p2,...,pmp_1, p_2, ..., p_m,用空格分隔(所有值小于1000000010000000

输出格式

每个用例输出一行,将输入的p1,p2,...,pmp_1, p_2, ..., p_m序列划分为恰好kk部分,使得单部分的最大和尽可能小。使用斜杠字符('/')分隔各部分。数字之间、数字与斜杠之间必须有一个空格。

若存在多个解,则优先选择使第一个抄写员工作量最小的方案,其次第二个,依此类推。但每个抄写员至少需分配到一本书。

输入样例

2
9 3
100 200 300 400 500 600 700 800 900
5 4
100 100 100 100 100

输出样例

100 200 300 400 500 / 600 700 / 800 900
100 / 100 / 100 / 100 100

题目来源

19981998年中欧地区竞赛