hdu1952 Tian Ji – The Horse Racing
Sample Input
3
92 83 71
95 87 74
2
20 20
20 20
2
20 19
22 18
0
Sample Output
200
0
0
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int tian[1005],king[1005];
int main()
{
int n;
while(scanf("%d",&n),n!=0)
{
int i;
for(i=0;i<n;i++) scanf("%d",&tian[i]);
for(i=0;i<n;i++) scanf("%d",&king[i]);
sort(tian,tian+n,cmp);
sort(king,king+n,cmp);
int tqian=0,tman=n-1;
int kqian=0,kman=n-1;
int sum=0;
for(i=0;i<n;i++)
{
if(king[kqian]<tian[tqian])
{
kqian++;
tqian++;
sum=sum+200;
}
else if(king[kqian]>tian[tqian])
{
kqian++;
tman--;
sum=sum-200;
}
else if(king[kqian]==tian[tqian])
{
if(tian[tman]<king[kman])
{
tman--;
kqian++;
sum=sum-200;
}
else if(tian[tman]>king[kman])
{
tman--;
kman--;
sum=sum+200;
}
else if(tian[tman]==king[kman])
{
if(tian[tman]<king[kqian])
{
kqian++;
tman--;
sum=sum-200;
}
/*else
{
kman--;
tman--;
}*/
}
}
}
printf("%d\n",sum);
}
return 0;
}
本文提供了一道经典算法题“天机-赛马”(HDU1952)的C++实现代码及解析。该题通过模拟古代赛马策略,比较两组马匹的速度来计算胜负积分。代码中使用了排序和条件判断等技术来找出最优匹配,最终输出比赛结果的总积分。
592

被折叠的 条评论
为什么被折叠?



