HDU 1052

注释的地方有点不太懂为啥不注释的话就TLE。。

贪心的策略:

一、当田忌最快的马比国王最快的马快时,用田忌最快的马赢国王最快的马。 
二、当田忌最快的马比国王最快的马慢时,用田忌最慢的马输给国王最快的马。
三、当田忌最快的马跟国王最快的马一样快时,分情况。

1、当田忌最慢的马比国王最慢的马快,那么用田忌最慢的马赢国王最慢的马

2、当田忌最慢的马比国王最慢的马慢,那么用田忌最慢的马输给国王最快的马

3、当田忌最慢的马跟国王最慢的马相等的时候,用田忌最慢的马跟国王最快的马比

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        if(n==0)
            break;
        int a[1005],b[1005];
        for(int i=0;i<n;i++)
            cin>>a[i];
        for(int i=0;i<n;i++)
        {
            cin>>b[i];
        }
        sort(a,a+n);
        sort(b,b+n);
        int l1=0,l2=0,r1=n-1,r2=n-1;
        int money=0;
        while(r1-l1>=0)
        {
            if(a[r1]>b[r2])
            {
                money+=200;
                r1--;
                r2--;
            }
            else if(a[r1]<b[r2])
            {
                money-=200;
                r2--;
                l1++;
            }
            else //if(a[r1]==a[r2])
            {

                if(a[l1]>b[l2])
                {
                    money+=200;
                    l1++;
                    l2++;
                }
                else
                {
                    if(a[l1]<b[r2])
                    money-=200;
                    l1++;
                    r2--;
                }
            }
        }
        cout<<money<<endl;
    }
    return 0;
}

posted @ 2018-05-13 11:59  MCQ  阅读(134)  评论(0编辑  收藏  举报