目录
题目描述:
这是中国历史上一个著名的故事。
“那是大约2300年前的事了。田骥将军是齐国的高级官员。他喜欢和国王和其他人一起赛马。
“田和王都有三匹不同等级的马,分别是普通马、加马和超级马。规则是一场比赛进行三轮;每匹马必须在一轮中使用。一轮的获胜者从失败者那里拿走两百银元。
“作为全国最有权势的人,国王拥有如此出色的马匹,以至于他的马匹在每个级别上都比田氏的好。结果,每次国王都会从田氏那里拿走六百银元。
“田骥对此并不高兴,直到他遇到了中国历史上最著名的将领之一孙膑。用了孙某的小招数,田姬带回了两百银元,下一场比赛就这么大恩了。
“这是一个相当简单的技巧。用他的常规级赛马与国王的超级级赛马,他们肯定会输掉那一轮。但后来他的加号打败了国王的常客,他的超级打败了国王的加号。多么简单的技巧。你又如何看待田姬这位中国高官呢?
如果田姬活在现在,他肯定会自嘲的。更重要的是,如果他现在参加ACM比赛,他可能会发现赛马问题可以简单地看作是在二分图中找到最大匹配。一边画田的马,另一边画国王的马。每当田氏的一匹马能打败国王的一匹马时,我们就会在它们之间划出一条优势,这意味着我们希望建立这对马。那么,赢得尽可能多的回合的问题就是在这个图中找到最大的匹配。如果存在平局,问题就变得更加复杂,他需要为所有可能的边分配权重 0、1 或 -1,并找到最大权重完美匹配......
然而,赛马问题是二分匹配的一个非常特殊的案例。该图由马的速度决定,---较快速度的顶点总是击败较低速度的顶点。在这种情况下,加权二分匹配算法是一个过于先进的工具,无法处理这个问题。
在这个问题中,你被要求编写一个程序来解决这个特殊的匹配问题。
输入:
输入由许多测试用例组成。每种情况都以第一行上的正整数 n (n <= 1000) 开头,即每边的马数。第二行接下来的n个整数是田氏马的速度。那么第三行接下来的 n 个整数就是国王的马的速度
样例输入:
3 92 83 71 95 87 74 2 20 20 20 20 2 20 19 22 18
样例输出:
200 0 0
思路解释:
先将田忌和齐威王的马从小到大排序:
并设立几个变量,变量:n(马的数量),ans(银元数,正数表示田忌获得的银元反之表示失去的银元),a[maxn](田忌的马存储在数组a中),b[maxn](齐威王的马存储在数组b中),lefta(田忌的最慢的马的下标),righta(齐威王最快的马的下标),leftb(齐威王最慢的马的下标),rightb(齐威王最