zoukankan      html  css  js  c++  java
  • UVa11292 Dragon of Loowater

    解题思路:这是一道简单的贪心题,能力强的骑士开价高,如果能力强,去砍一个很弱

         的头,就是浪费人才。所以把雇来的骑士按照能力从小到大排序,所有头直径

         按照从小到大排序,一个一个砍就可以了。不能砍掉当前头的就不用雇佣了。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int maxn = 20005;
     6 int A[maxn], B[maxn];
     7 int main()
     8 {
     9     int n, m, sum, cnt1, cnt2;
    10     while(~scanf("%d %d", &n, &m) && (n || m))
    11     {
    12         for(int i = 0; i < n; i++) scanf("%d", &A[i]);
    13         for(int i = 0; i < m; i++) scanf("%d", &B[i]);
    14         if(m < n)   //因为一个骑士只能砍一个头,如果骑士人数少于
    15                     //头的个数,则直接输出即可。
    16         {
    17             printf("Loowater is doomed!
    ");
    18             continue;
    19         }
    20         sort(A, A + n); //直接sort排序,默认从小到大
    21         sort(B, B + m);
    22         cnt1 = cnt2 = sum = 0;
    23         while(1)
    24         {
    25             if(B[cnt2] >= A[cnt1])//如果能砍掉当前的头,指针同时
    26                                   //往后移一位。
    27             {
    28                 sum += B[cnt2];
    29                 cnt2 ++, cnt1 ++; 
    30             }
    31             else cnt2 ++; //如果不能,对应骑士到大指针往后移一位
    32 
    33             if(cnt1 == n || cnt2 == m) break; //如果任何一个指针扫描完了,就跳出。
    34         }
    35         if(cnt1 == n) printf("%d
    ", sum); //如果全部的头都砍了,就输出最少花费
    36         else printf("Loowater is doomed!
    ");
    37     }
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    单例模式创建
    盛最多水的容器
    魔术索引
    钢条切割
    比较版本号
    矩阵中的路径
    机器人的运动范围
    计网基础问题
    Linux 下android环境的配置
    Fedora15下安装Android开发环境
  • 原文地址:https://www.cnblogs.com/loveprincess/p/4820358.html
Copyright © 2011-2022 走看看