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

来源:互联网 发布:遥感数据预处理方法 编辑:程序博客网 时间:2024/06/01 23:25
  • 题目来源: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\n",ans);    }    return 0;}
原创粉丝点击