#P2287. Tian Ji -- The Horse Racing
Tian Ji -- The Horse Racing
题目描述
这里有一个中国历史上的著名故事。
大约2300年前,田忌是齐国的一位高官,他喜欢和齐王及其他人赛马。田忌和齐王各有三匹马,分为三个等级:普通、优等和超级。比赛规则是进行三轮,每匹马必须参加一轮。每轮胜者从败者那里获得200银元。
作为国内最有权势的人,齐王的马非常优良,每个等级的马都比田忌的强。因此,每次比赛齐王都会从田忌那里赢走600银元。
田忌对此很不高兴,直到他遇到了中国历史上最著名的将军之一——孙膑。在孙膑的帮助下,田忌使用了一个小策略,在接下来的比赛中带回了200银元并赢得了荣誉。
这个策略相当简单:用他的普通马对阵齐王的超级马(这一轮必然输掉),然后用他的优等马击败齐王的普通马,用他的超级马击败齐王的优等马。多么简单的策略!现在你会如何看待这位中国的高官田忌呢?
如果田忌生活在今天,他肯定会嘲笑自己。更甚者,如果他现在坐在ACM竞赛现场,可能会发现赛马问题可以简单地视为在二分图中寻找最大匹配。将田忌的马放在一侧,齐王的马放在另一侧,每当田忌的一匹马能击败齐王的一匹马时,就在它们之间画一条边,表示希望建立这对匹配。那么,赢得尽可能多轮比赛的问题就转化为在这个图中寻找最大匹配。如果存在平局,问题会更复杂,需要为所有可能的边分配权重0、1或-1,然后寻找最大权完美匹配……
然而,赛马问题是二分匹配的一个特殊情况,图由马的速度决定——速度快的马总能击败速度慢的马。在这种情况下,使用加权二分匹配算法处理这个问题显得过于复杂。
在本题中,要求你编写程序解决这个特殊的匹配问题。
输入格式
- 输入最多包含50个测试用例,每个用例以正整数n(n≤1000)开头,表示双方的马的数量。
- 第二行是n个整数,表示田忌的马的速度。
- 第三行是n个整数,表示齐王的马的速度。
- 最后一个测试用例后有一行单独的0表示输入结束。
输出格式
- 对每个测试用例,输出一行,包含一个整数,表示田忌能获得的最大银元数。
输入样例 1
3
92 83 71
95 87 74
2
20 20
20 20
2
20 19
22 18
0
输出样例 1
200
0
0
来源
上海2004年相关问题