HDU ACMSteps 1.3.3:: Tian Ji ——The Horse Racing

#include <iostream>
#include <memory.h> 
#include <algorithm>
using namespace std;
/*
HDU题目:: Tian Ji -- The Horse Racing
Input
The input consists of up to 50 test cases. Each case starts with a positive integer n (n <= 1000) on the first line, which is 
the number of horses on each side. The next n integers on the second line are the speeds of Tian’s horses. Then the next n 
integers on the third line are the speeds of the king’s horses. The input ends with a line that has a single 0 after the last
test case.
Output
For each input case, output a line containing a single number, which is the maximum money Tian Ji will get, in silver dollars.
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
分析:
输入马匹规模n,输入田忌n匹马的速度,输入国王n匹马的速度.其思路是用最小的耗费赢取最大的胜利。对于快马的比较,能赢则赢。不能赢则考虑尽量用最小的代价打平不输钱(这里主要是代价观点)
*/
bool cmp(int a,int b)
{
    return a>b;
}
int main(){
int tian[1002];
int king[1002];
memset(tian,0,1002*sizeof(int));
memset(king,0,1002*sizeof(int));
int n,i,fast,fask,slot,slok,win_num;
while(true){
cin>>n;
if(n==0) break;
for(i=0;i<n;i++)//输入两人马匹速度 
cin>>tian[i]; 
for(i=0;i<n;i++)
cin>>king[i]; 
sort(tian,tian+n,cmp);
sort(king,king+n,cmp);
fast=0,fask=0,slot=slok=n-1,win_num=0;
while(fast<=slot&&fask<=slok){
if(tian[fast]>king[fask]){//快马比皇上快 
win_num++;
fast++,fask++;
}
else//不赢的时候主要考虑能否用以获取平局
if(tian[slot]>king[slok]){//田忌的慢马比皇上的慢马快 
win_num++;
slot--,slok--;
}
else
{//慢马无法赢,那么用来挡输或打平 
if(tian[slot]<king[fask])//用田忌的慢马去输皇上最快的马 
win_num--;
slot--,fask++;
}
}
cout<<(win_num<<1)*100<<endl;
memset(tian,0,n*sizeof(int));//清零
memset(king,0,n*sizeof(int));
}
return 0;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值