NYOJ 364 田忌赛马(贪心)

     NYOJ 364 田忌赛马 (贪心)
分类: 解题报告 2012-09-18 14:11 583人阅读 评论(2) 收藏 举报
ini

题目链接

好长一篇阅读理解,不过题意不难理解,第一行给出n表示有n场比赛,以下两行分别给出n个数,分别表示田忌和齐王n匹马的速度,
赢家从输者手中获得200钱,求田忌最多能赢多少钱。
	#include<iostream>  
    #include<algorithm>  
    using namespace std;  
    int tian[1005],king[1005];  
    bool cmp(int a,int b)  
    {  
        return a>b;  
    }  
    int match(int n)  
    {  
        sort(tian,tian+n,cmp);  
        sort(king,king+n,cmp);  
        int tl=0,tr=n-1,kl=0,kr=n-1,win=0,lose=0;  
        while(tl<=tr)  
        {  
            if(tian[tl]>king[kl])  
            {  
                win++;  
                tl++;  
                kl++;  
            }  
            else if(tian[tr]>king[kr])  
            {  
                win++;  
                tr--;  
                kr--;  
            }  
            else  
            {  
                if(tian[tr]<king[kl])  
                    lose++;  
                tr--;  
                kl++;  
            }  
        }  
        return (win-lose)*200;  
    }  
    int main()  
    {  
        int n,i;  
        while(cin>>n)  
        {  
            for(i=0;i<n;i++)  
                cin>>tian[i];  
            for(i=0;i<n;i++)  
                cin>>king[i];  
            cout<<match(n)<<endl;  
        }  
        return 0;  
    } 
思路详解:<p>1、当田忌最快的马比齐王最快的马快时,用田忌最快的马对抗齐王最快的马,赢一场。</p><p>2、当田忌最慢的马比齐王最慢的马快时,用田忌最慢的马对抗齐王最慢的马,赢一场。</p><p>3、当1、2都不满足时,用田忌最慢的马对抗齐王最快的马,若田忌最慢的马比齐王最快的慢时,输一场,否则平局。</p><p>
</p> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值