#P3189. Steady Cow Assignment

    ID: 2190 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>其他二分查找匈牙利算法USACO 2006 February Gold

Steady Cow Assignment

题目描述:

FarmerJohnFarmer JohnN1N1000N(1 ≤ N ≤ 1000)头奶牛分别居住在 B1B20B(1 ≤ B ≤ 20)个谷仓中,每个谷仓的容量有限。有些奶牛非常喜欢它们当前的谷仓,有些则不太满意。

FJFJ 希望重新安排奶牛的居住地点,使得所有奶牛的满意度尽可能均衡,即使这意味着所有奶牛都讨厌它们被分配的谷仓。

每头奶牛都向 FJFJ 提供了自己对谷仓的偏好顺序。一头奶牛对某个分配方案的满意度等于其被分配到的谷仓在它偏好列表中的排名。你的任务是找到一种将奶牛分配到谷仓的方案,使得:

11.没有谷仓的居住数量超过其容量

22.所有奶牛对所分配谷仓的满意度排名的范围大小(即最高排名与最低排名的差值加一)尽可能小。

输入:

第一行:两个用空格分隔的整数,NNBB

第二行到第 N+1N+1 行:每行包含 BB 个用空格分隔的整数,这些整数恰好是 11BB 的某种排列。第 i+1i+1 行的第一个整数是第 ii 头奶牛的首选谷仓编号,第二个整数是该奶牛的次选谷仓编号,依此类推。

N+2N+2 行:BB 个用空格分隔的整数,分别对应第一个谷仓的容量、第二个谷仓的容量,依此类推。保证这些整数的和至少为 NN

输出:

第一行:一个整数,表示奶牛对所分配谷仓的排名的最小范围的大小(包括端点)。

输入数据1

6 4
1 2 3 4
2 3 1 4
4 2 3 1
3 1 2 4
1 3 4 2
1 4 2 3
2 1 3 2

输出数据1

2

提示:

样例解释:

每头奶牛被分配到其首选或次选谷仓:谷仓 11 分配到奶牛 151 和 5,谷仓 22 分配到奶牛 22,谷仓 33 分配到奶牛 44,谷仓 44 分配到奶牛 363 和 6

来源:

美国计算机科学奥林匹克竞赛(USACO)2006 年 2 月白银级