P0596

[Noi2012]美食节

[Noi2012]美食节

CZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节。

作为一个喜欢尝鲜的美食客,小 M 自然不愿意错过这场盛宴。他很快就尝遍了美食节所有的美食。然而,尝鲜的欲望是难以满足的。尽管所有的菜品都很可口,厨师做菜的速度也很快,小 M 仍然觉得自己桌上没有已经摆在别人餐桌上的美食是一件无法忍受的事情。于是小 M 开始研究起了做菜顺序的问题,即安排一个做菜的顺序使得同学们的等待时间最短。

小 M 发现,美食节共有 nn 种不同的菜品。每次点餐,每个同学可以选择其中的一个菜品。总共有 mm 个厨师来制作这些菜品。当所有的同学点餐结束后,菜品的制作任务就会分配给每个厨师,然后每个厨师就会同时开始做菜。厨师们会按照要求的顺序进行制作,并且每次只能制作一人份。

此外,小 M 还发现了另一件有意思的事情:虽然这 mm 个厨师都会制作全部的 nn 种菜品,但对于同一菜品,不同厨师的制作时间未必相同。他将菜品用 1,2,…,n1, 2, \dots, n 依次编号,厨师用 1,2,…,m1, 2, \dots, m 依次编号,将第 jj 个厨师制作第 ii 种菜品的时间记为 ti,jt_{i,j}。

小 M 认为:每个同学的等待时间为所有厨师开始做菜起,到自己那份菜品完成为止的时间总长度。换句话说,如果一个同学点的菜是某个厨师做的第 kk 道菜,则他的等待时间就是这个厨师制作前 kk 道菜的时间之和。而总等待时间为所有同学的等待时间之和。

现在,小 M 找到了所有同学的点菜信息:有 pip_i 个同学点了第 ii 种菜品(i=1,2,…,ni = 1, 2, \dots, n)。他想知道的是最小的总等待时间是多少。

输入格式

第 11 行包含两个正整数 nn 和 mm,表示菜品的种数和厨师的数量。

第 22 行包含 nn 个正整数,其中第 ii 个数为 pip_i,表示点第 ii 种菜品的人数。

接下来有 nn 行,每行包含 mm 个非负整数,这 nn 行中的第 ii 行的第 jj 个数为 ti,jt_{i,j},表示第 jj 个厨师制作第 ii 种菜品所需的时间。

输入文件中每行相邻的两个数之间均由一个空格隔开,行末均没有多余空格。

输出格式

输出仅一行,包含一个整数,为总等待时间的最小值。

样例输入

3 2
3 1 1
5 7
3 6
8 9

样例输出

47

样例解释

厨师 11 先制作 11 份菜品 22,再制作 22 份菜品 11。点这 33 道菜的 33 个同学的等待时间分别为 33、3+5=83+5 = 8、3+5+5=133+5+5 = 13。

厨师 22 先制作 11 份菜品 11,再制作 11 份菜品 33。点这 22 道菜的 22 个同学的等待时间分别为 77、7+9=167+9 = 16。

总等待时间为 3+8+13+7+16=473+8+13+7+16 = 47。

虽然菜品 11 和菜品 33 由厨师 11 制作更快,但如果这些菜品都由厨师 11 制作,总等待时间反而更长。如果按上述的做法,将 11 份菜品 11 和 11 份菜品 33 调整到厨师 22 制作,这样厨师 22 不会闲着,总等待时间更短。可以证明,没有更优的方案。

数据范围

对于 100%100\% 的数据:

  • n≤40n\le 40,m≤100m\le 100,p≤800p\le 800,ti,j≤1000t_{i,j}\le 1000,其中 p=∑pip = \sum p_i 即点菜同学的总人数。

每组数据的 nn、mm 和 pp 值如下:

测试点编号nnmmpp
1155551010
22404011400400
33404022300300
44404040404040
55554040100100
6610105050200200
7720206060400400
8840408080600600
994040100100800800
10104040100100800800

来源与许可

本题为 NOI 2012 试题「美食节」,题面与测试数据整理自 BZOJ 2879。

样例 1

输入

3 2
3 1 1
5 7
3 6
8 9

输出

47