(http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=3&problemid=4)
用贪心思想
先将两人的马排序,我想先让两人的慢马比,若田忌的马比齐王的马快,就让田忌的胜,若比齐王的慢,让田忌的慢马输给齐王的快马,若相等时,不能让他简单的输给齐王的快马,因为田忌的快马若比齐王的快马还快,就不用故意输给他,让田忌的快马发挥最大的用处,不行的话再用慢马比。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int n;
int tian[1005],qi[1005];
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
{
cin>>tian[i];
}sort(tian,tian+n);
for(int i=0;i<n;i++)
{
cin>>qi[i];
}sort(qi,qi+n);
int tian_fast=n-1,tian_slow=0;
int qi_fast=n-1,qi_slow=0;
int win=0,lose=0;
while(tian_fast>=tian_slow)
{
if(tian[tian_slow]>qi[qi_slow])
{
win++;
tian_slow++;
qi_slow++;
}
else if(tian[tian_slow]<qi[qi_slow])
{
lose++;
tian_slow++;
qi_fast--;
}
else
{
if(tian[tian_fast]>qi[qi_fast])
{
win++;
tian_fast--;
qi_fast--;
}
else
{
if(tian[tian_slow]<qi[qi_fast])//还不一定输
lose++;
tian_slow++;
qi_fast--;
}
}
}
cout<<(win-lose)*200<<endl;
}
return 0;
}