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
",ans*200);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/forever97/p/3486064.html