#H0031. Jiang学长的WF之路(三十一)

Jiang学长的WF之路(三十一)

题目背景

(请先学习二分图最大匹配) WF 比赛进入最后的一小时封榜期!jiangly 已经看穿了最后一道大毒瘤数据结构题的本质,这道题可以拆分成 NN 个互相独立的子任务。 而 jiangly 的脑海中有 MM 种不同的高级数据结构模板(比如 LCT、树套树、K-D Tree 等)。由于不同子任务的性质不同,用第 jj 个模板去写第 ii 个子任务,会产生一个“实现卡壳度” Di,jD_{i,j}。 此时 jiangly 负责在脑内构思,Jiangrc 学长则负责具体的分配策略。他需要为这 NN 个子任务分配恰好一个独占的模板(即从 MM 个模板里挑 NN 个一一对应)。 为了保证 jiangly 能平稳地在最后一分钟绝杀,Jiangrc 希望在所有选出的分配方案中,最容易卡壳的那个子任务的卡壳度尽可能小。

题目描述

给定一个 N×MN \times M 的矩阵 DD,表示 NN 个子任务分配到 MM 种模板的实现卡壳度(NMN \le M)。 你需要将 NN 个子任务分配给 NN 种不同的模板。 求所有合法分配方案中,所分配模板产生的最大卡壳度的最小值。

输入格式

第一行包含两个整数 NNMM1NM3001 \le N \le M \le 300)。接下来 NN 行,每行 MM 个整数,第 ii 行的第 jj 个整数为 Di,jD_{i,j}1Di,j1091 \le D_{i,j} \le 10^9)。输出格式

输出格式

输出一个整数,表示在最优分配方案下,最大的实现卡壳度的最小值。

样例

3 4
5 9 3 2
8 4 6 7
3 1 5 9
4

样例解释

Jiangrc 设计的最优分配策略是:第 1 个子任务分配第 4 种模板,卡壳度为 2。第 2 个子任务分配第 2 种模板,卡壳度为 4。第 3 个子任务分配第 1 种模板,卡壳度为 3。此时最大卡壳度为 max(2,4,3)=4\max(2, 4, 3) = 4。找不到任何方案能让最大的卡壳度小于 4,jiangly 可以稳稳 AK!