P2857 [USACO06FEB] Steady Cow Assignment G
题目描述
农夫约翰的 $N$ 头牛($1 \leq N \leq 1000$)各自居住在 $B$ 个谷仓中的一个($1 \leq B \leq 20$),当然,谷仓的容量是有限的。有些牛非常喜欢她们当前的谷仓,而有些则不太开心。
FJ 想要重新安排这些牛,使得牛群的快乐程度尽可能均衡,即使这意味着所有的牛都讨厌她们被分配的谷仓。
每头牛都会告诉 FJ 她对谷仓的偏好顺序。牛对特定分配的快乐程度是她对该谷仓的排名。你的任务是找到一种将牛分配到谷仓的方法,使得没有谷仓的容量被超出,并且牛给她们被分配的谷仓的排名范围(即最高排名谷仓和最低排名谷仓之间的正差加一)的大小尽可能小。
输入格式
第 1 行:两个用空格分隔的整数,$N$ 和 $B$
第 2 行到第 $N+1$ 行:每行包含 $B$ 个用空格分隔的整数,正好是 $1..B$ 的某种顺序排列。第 $i+1$ 行的第一个整数是第 $i$ 头牛最喜欢的谷仓的编号,第二个整数是第 $i$ 头牛次喜欢的谷仓的编号,依此类推。
第 $N+2$ 行:$B$ 个用空格分隔的整数,分别是第一个谷仓的容量,第二个谷仓的容量,依此类推。这些数字的总和保证至少为 $N$。
输出格式
第 1 行:一个整数,牛给她们被分配的谷仓的排名范围的最小值,包括端点。
说明/提示
样例解释:
每头牛可以被分配到她们的第一或第二选择:谷仓 1 得到牛 1 和 5,谷仓 2 得到牛 2,谷仓 3 得到牛 4,谷仓 4 得到牛 3 和 6。
(由 ChatGPT 4o 翻译)