码迷,mamicode.com
首页 > 其他好文 > 详细

POJ2287 Tian Ji -- The Horse Racing【贪心】

时间:2015-04-14 08:39:25      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:

http://poj.org/problem?id=2287


题目大意:

田忌和大王赛马,两个人各有N匹马,每匹马都有一个速度,跑的快的胜,慢的就输。田忌每赢一

把得200,平了不得钱,输了输200。每次大王先出马,田忌再出马。问:田忌最多能得多少钱。


思路:

贪心思想。现对田忌和大王的马进行排序。田忌的马速度从小到大排列,大王的马速度从大到小排

列。为了尽可能的赢,田忌就要采取以下策略:

1)尽可能用自己速度低的马去赢得大王速度快的马。

2)剩下赢不了的马,尽可能用自己的马和大王的马打平手

3)剩下的既不能赢得比赛,也不能平手的马就只能是输了

用NumA[]数组和NumB[]数组分别标记已经知道胜负的马,遍历两次田忌和大王的马,第一次找出

能赢大王的马,第二次从剩下的马中找出能与大王的马平手的马。然后计算赢得的金钱。


AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

int A[1100],B[1100],NumA[1100],NumB[1100];

int cmp(int a,int b)
{
    return a > b;
}

int main()
{
    int N;
    while(~scanf("%d",&N))
    {
        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,cmp);
        memset(NumA,0,sizeof(NumA));
        memset(NumB,0,sizeof(NumB));
        //尽可能去赢
        for(int i = 0; i < N; ++i)  //田忌
        {
            for(int j = 0; j < N; ++j)  //国王
            {
                if(A[i] > B[j] && !NumA[i] && !NumB[j])
                {
                    NumA[i] = 1;
                    NumB[j] = 1;
                    break;
                }
            }
        }
        //赢不了就尽可能平手
        for(int i = 0; i < N; ++i)
        {
            for(int j = 0; j < N; ++j)
            {
                if(A[i] == B[j] && !NumA[i] && !NumB[j])
                {
                    NumA[i] = 2;
                    NumB[j] = 2;
                    break;
                }
            }
        }
        int ans = 0;
        for(int i = 0; i < N; ++i)
            if(NumA[i] == 1)
                ans += 200;
            else if(NumA[i] == 2)
                continue;
            else
                ans -= 200;

        printf("%d\n",ans);
    }

    return 0;
}


POJ2287 Tian Ji -- The Horse Racing【贪心】

标签:

原文地址:http://blog.csdn.net/lianai911/article/details/45031407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!