HDU 1052 Tian Ji -- The Horse Racing(贪心)

  • 题目来源:1052
  • 题目分析:题目说的权值匹配算法,有点误导作用,这道题实际是用贪心来做的.
    主要就是规则的设定:
    1.田忌最慢的马比国王最慢的马快,就赢一场
    2.如果田忌最慢的马比国王最慢的马慢,就让这两匹马比一场,输一场
    3.如果田忌最慢的马和国王最慢的马相等,就看
    如果田忌最快的马比国王最快的马快,那就比一场,赢
    如果田忌最快的马比国王最快的马慢,就让最慢的马和国王最快的马比一场,这一场输
    如果田忌最快的马和国王最快的马相等,就看田忌最慢的马是否比国王最快的马慢,如果是,输一场,否则就是所有马都一样。

  • 完整代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const int MAXN=1010;
int a[MAXN],b[MAXN];
int main()
{
    int n;
    while(scanf("%d",&n)==1&&n)
    {
        for(int i=0;i<n;i++)scanf("%d",&a[i]);
        for(int i=0;i<n;i++)scanf("%d",&b[i]);
        sort(a,a+n);
        sort(b,b+n);
        int al=0,ah=n-1;
        int bl=0,bh=n-1;
        int ans=0;
        while(al<=ah&&bl<=bh)
        {
            if(a[al]>b[bl])
            {
                ans+=200;
                al++;bl++;
            }
            else if(a[al]<b[bl])
            {
                ans-=200;
                al++;bh--;
            }
            else
            {
                if(a[ah]>b[bh])
                {
                    ans+=200;
                    ah--;bh--;
                }
                else if(a[ah]<b[bh])
                {
                    ans-=200;
                    al++;bh--;
                }
                else
                {
                    if(a[al]<b[bh])
                    {
                        ans-=200;
                        al++;bh--;
                    }
                    else if(a[al]==b[bh])
                    {
                        break;
                    }
                }
            }
        }
        printf("%d
",ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/FlyerBird/p/9052567.html