此題鏈接單擊這裏
=================
題意:
田忌和齊王分別有n匹,給出每匹馬的速度。讓田忌和齊王的馬比賽,問田忌最多能贏多少錢(贏一場贏200,輸一場輸200,打平不分輸贏)。
思路:
先把田忌和齊王的馬分別排序,然後分三種情況:
1、齊王最快的馬比田忌最快的馬慢, 用田忌最快的馬贏齊王最快的馬。
2、齊王最快的馬比田忌最快的馬快,用田忌最慢的馬輸給齊王最快的馬。
3、齊王和田忌最快的馬一樣快,再分情況:3.1、齊王最慢的馬比田忌最慢的馬慢,用田忌最慢的馬贏齊王最慢的馬。
3.2、齊王最慢的馬比田忌最慢的馬快,用田忌最慢的馬輸給齊王最快的馬。
3.3、齊王和田忌最慢的馬一樣快,再分:如果田忌的最慢的馬比齊王最快的慢,用田忌最慢的馬輸給齊王最快的馬。
否則就打平。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n;
int ta[1010];
int ka[1010];
int main()
{
while(~scanf("%d",&n)&&n)
{
int sum=0;
for(int i=0;i<n;i++)
scanf("%d",ta+i);
for(int i=0;i<n;i++)
scanf("%d",ka+i);
sort(ta,ta+n);
sort(ka,ka+n);
int tl=0,tr=n-1;
int kl=0,kr=n-1;
while(tl<=tr&&kl<=kr)
{
if(ta[tr]>ka[kr])
{
sum+=200;
tr--;
kr--;
}
else if(ta[tr]<ka[kr])
{
sum-=200;
tl++;
kr--;
}
else
{
if(ta[tl]>ka[kl])
{
sum+=200;
tl++;
kl++;
}
else if(ta[tl]<ka[kl])
{
sum-=200;
tl++;
kr--;
}
else
{
if(ta[tl]<ka[kr])
sum-=200;
tl++;
kr--;
}
}
}
printf("%d\n",sum);
}
return 0;
}
有問題聯繫企鵝791267032
郵箱地址….[email protected]