• POJ2287 Tian Ji The Horse Racing


      原题传送:http://poj.org/problem?id=2287

    贪心算法:

      1. 田忌要尽可能用最慢的马去赢齐王最快的马。

      2. 能赢就赢。

      一开始我不是这么想的,我是用田忌最快的马和齐王最快的马比较,如果田忌慢,那么换田忌最慢的马和谐掉齐王最快的马,那么田忌剩下的马赢的次数就能多点。但是这种想法是错的,这样过不了下面这组测试数据:

    3
    5 5 3
    5 4 2
    答案:400

    View Code
     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <string.h>
     4 #define MAXN 1005
     5 
     6 int a[MAXN], b[MAXN];
     7 
     8 bool cmp(int x, int y){return x > y;}
     9 
    10 int main()
    11 {
    12     int i, n, sum, k, al, ar, bl, br;
    13     while(scanf("%d", &n), n)
    14     {
    15         for(i = 0; i < n; i ++)
    16             scanf("%d", &a[i]);
    17         for(i = 0; i < n; i ++)
    18             scanf("%d", &b[i]);
    19         std::sort(a, a + n, cmp);
    20         std::sort(b, b + n, cmp);
    21         k = sum = 0;
    22         al = bl = 0, ar = br = n - 1;
    23         while(al <= ar)
    24         {
    25             if(a[ar] > b[br])
    26             {
    27                 sum ++;
    28                 ar --, br --;
    29             }
    30             else if(a[al] > b[bl])
    31             {
    32                 sum ++;
    33                 al ++, bl ++;
    34             }
    35             else if(a[al] <= b[bl])
    36             {
    37                 if(a[ar] < b[bl])
    38                     k ++;
    39                 ar --, bl ++;
    40             }
    41         }
    42         printf("%d\n", 200 * (sum - k));
    43     }
    44     return 0;
    45 }

      后来想想,怎么好像是动态规划题啊。

  • 相关阅读:
    Servlet中文件上传
    Servlet 返回Json数据格式
    Java通用oracle和mysql数据库连接
    JAVA JDBC
    Thread suspend()挂起resume()恢复
    Thread 线程池
    阿里巴巴开源框架java诊断工具--Arthas
    B Tree
    MySQL--高性能MySQL笔记二
    MySQL--高性能MySQL笔记一
  • 原文地址:https://www.cnblogs.com/huangfeihome/p/2696169.html
Copyright © 2020-2023  润新知