HDU 1052 Tian Ji -- The Horse Racing

题解:对于这道题,我们采用这样的策略,首先,排序是明显的,然后第一步,若己方最弱的比对方最弱的强,则两者比赛,如果不是,进行第二步,比较己方最强的和敌方最强的,若己方强则两者比赛,否则将己方最弱的与敌方最强的比赛。然后依次做下去,统计结果即为答案。

注意点:学习了sort的用法,是从0开始读入数组的,注意algorithm的拼写,最后注意判断是双等号,pas的习惯还是没有改过来……

#include <cstdio>

#include <algorithm>

using namespace std;

int main()

{

    int n;

    while(scanf("%d",&n),n!=0)

    {

        int al,ar,bl,br,ans=0;

        int a[1010],b[1010];

        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);

        bl=0; br=n-1;

        al=0; ar=n-1;

        while(al<=ar)

        {

            if (a[al]>b[bl]) {ans++;al++;bl++;}

            else if (a[ar]>b[br]) {ans++;ar--;br--;}

            else if (a[al]==b[br]) {al++; br--;}

            else {ans--; al++; br--;}

        }

        printf("%d\n",ans*200);

    }

    return 0;

}

你可能感兴趣的:(HDU)