#1156. 调度(dispatch)

调度(dispatch)

题目描述

共有 nn 名工人和 mm 个任务。工人的编号从 11nn

每项任务 ii 都有一个值 aia_i —— 表示第 ii 个工人精通第 aia_i 个任务。每个任务都需要有一名工人负责。

如果工人精通该任务,他们会在 11 小时内完成任务。否则,他们需要花费 33 小时。

工人们并行工作,彼此独立。每个工人一次只能完成一个任务。

请你将所有工人进行调度,以便尽早完成任务。工作从时间 00 开始。请问完成所有任务的最短时间是多少?

输入格式

第一行包含一个整数 tt,表示测试用例数。

接下来对于每个测试用例:

  • 第一行包含两个整数 nnmm,分别表示工人数和任务数。
  • 第二行包含 mm 个整数 a1,a2,,ama_1, a_2, \dots, a_m —— 表示第 ii 个工人精通第 aia_i 个任务。

输出格式

对于每个测试用例,输出一行一个整数,即完成所有任务的最短时间。

样例输入 1

4
2 4
1 2 1 2
2 4
1 1 1 1
5 5
5 1 3 2 4
1 1
1

样例输出 1

2
3
1
1

说明

样例解释

  • 第一组:第一个工人负责第 1133 项任务,第二个工人负责第 2244 项任务。由于他们都精通相应的任务,因此每个任务都需要花费 11 小时。两人都在 22 小时内完成 22 项任务。因此,所有任务都在 22 小时内完成。
  • 第二组:分配第一名工人完成第 1,21, 233 项任务,第二名工人完成第 44 项任务是最佳方案。第一名工人花费了 33 个小时,第二名工人花费了 33 个小时(因为他们并不精通所承担的任务)。
  • 第三组:每个工人都可以被分配到自己擅长的任务。因此,每个人都能在 11 小时内完成任务。

其它样例说明

  • 样例 2:见选手目录下的 dispatch/dispatch2.indispatch/dispatch2.ans,该测试用例满足测试点 181 \sim 8 的约束条件。
  • 样例 3:见选手目录下的 dispatch/dispatch3.indispatch/dispatch3.ans,该测试用例满足测试点 131613 \sim 16 的约束条件。
  • 样例 4:见选手目录下的 dispatch/dispatch4.indispatch/dispatch4.ans,该测试用例满足测试点 172017 \sim 20 的约束条件。

数据范围

对于 100%100\% 的数据,满足以下约束条件:

  • 1t101 \le t \le 10
  • 1nm2×1051 \le n \le m \le 2 \times 10^5
  • 1ain1 \le a_i \le n

各测试点的附加限制如下表所示:

测试点编号 nn \le mm \le 特殊性质
181 \sim 8 88
9129 \sim 12 2×1052 \times 10^5 aia_i 互不相同
131613 \sim 16 aia_i 全部相同
172017 \sim 20

点击下载大样例