hdu 1052 Tian Ji -- The Horse Racing

贪心思路:田忌要用最小的代价(最慢的马)输一场比赛,而要耗费掉齐王最大的资源;齐王用最大的代价赢田忌,以最大的代价输田忌。
先把田忌和国王的马排序。
每次取田忌的最快的马与国王最快的马比较,有三种情况。
一,田忌最快的马比国王最快的快,那么直接拿田忌最快的马去赢国王最快的马。
二,田忌最快的马比国王最快的慢,那么拿田忌最慢的马去输国王最快的马。
三,田忌最快的马与国王最快的马速度一样。
          先拿田忌最慢的马与国王最慢的马比较。
          田忌 比国王快,直接赢掉国王最慢的马。
          否则田忌最慢的马再去与国王最快的马比。
     如果最快最慢的马都一样,用田忌最慢的马和国王最快的马比。
AC代码:
#include<iostream>
#include<algorithm>
using namespace std;
#define NUM 1005
int k[NUM],t[NUM];
int main()
{
    int n,i,j,kn,win;//i:己方最小,j:对方最小;两头往中间遍历
    while(cin>>n&&n!=0){
        for(i=0;i<n;i++)
            cin>>t[i];
        for(i=0;i<n;++i)
            cin>>k[i];
        sort(k,k+n);
        sort(t,t+n);
        win=0;kn=n;//n:己方最大,kn:对方最大
        for(i=0,j=0;i<n;){
            if(t[i]<k[j]){//无平局,且己方最小<对方最小
                i++;//拿最小拼对方最大
                kn--;
                win--;
            } else if(t[i]>k[j]){//无平局,且己方最小>对方最小
                i++;//直接赢
                j++;
                win++;
            } else {//己方最小=对方最小
                if(t[n-1]>k[kn-1]){//己方最大>对方最大
                    n--;kn--;//直接赢
                    win++;
                } else if(t[n-1]<k[kn-1]){//己方最大<=对方最大
 
                    i++;kn--;//拿最小拼对方最大
                    win--;
                } else if(t[n-1]==k[kn-1]){//最小与最大都与对方相等
                    if(t[i]<k[kn-1])//拿最小拼对方最大                        
                        win--;
					i++;kn--;//己方最小=对方最大,则平局:指针往前移,win不变
                   
 
                }
            }
			
        }
        cout<<win*200<<endl;		
    }
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值