zoukankan      html  css  js  c++  java
  • UVa 11292 勇者斗恶龙(The Dragon of Loowater)

    有一条n个头的恶龙,现在有m个骑士可以雇佣去杀死他,一个能力值为x的勇士可以砍掉直径不超过x的头,而且需要支付x个金币。如何雇佣才能砍掉所有的头且支付最少的金币,注意一个勇士只能砍一个头,也只能被雇佣一次。

    输入包含多组数据,每组数据第一行为正整数n,m(1<=n,m<=20000),以下n行每行为一个整数,就是恶龙的头的直径,以下m行每行为一个整数,就是每个骑士的能力值。输入结束标志位m=n=0。

    输出格式对于每组数据输出最少花费,如果无解,则输出"Loowater is doomed!"。

    SAMPLE INPUT

    2 3

    5

    4

    7

    8

    4

    2 1

    5

    10

    0 0

    SAMPLE OUTPUT

    11

    Loowater is doomed!

    嗯...最小的花费,肯定会想到贪心的思想...当然这道题里有轻微的贪心思想。

    思路:

    将龙的头按照直径的长短从小到大排序,将勇士的能力值从小到大排序(为了不浪费勇士的能力值),然后进行比较...

    鬼畜一——cur:

    注意我们要记录龙已经被砍掉几个头,并且下一个要砍哪一个,所以用cur来记录,并且最后cur要和n进行比较,看看是否将龙所有的头都砍完了..

    鬼畜二——输入:

    输入与平常不同,只有输入到 0 0 时才会停止,所以要用一个while循环嵌套所有

    大体过程:

    输入 ------>  贪心思想的排序 -------->  比较  --------> 是否能将所有的头砍去 ---------> 根据情况输出

    下面是AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 
     8 const int maxn = 20005;
     9 
    10 int j[maxn], d[maxn];
    11 //j数组表示骑士的能力值
    12 //d数组表示龙头的直径 
    13 
    14 int main(){
    15     int n, m;
    16     while(scanf("%d%d", &n, &m) == 2 && n && m){//while循环进行输入,n,m不得为0 
    17         for(int i = 1; i <= n; i++) scanf("%d", &d[i]);
    18         for(int k = 1; k <= m; k++) scanf("%d", &j[k]);
    19         sort(d+1, d+n+1); //排序 
    20         sort(j+1, j+m+1);
    21         int cost = 0, cur = 0;//cost为最小花费,cur为鬼畜一 
    22         for(int i = 1; i <= m; i++){
    23             if(j[i] >= d[cur]){//进行比较 
    24                 cost += j[i];
    25                 if(++cur == n) break;//将龙头全砍掉 
    26             }
    27         }
    28         if(cur < n) printf("Loowater is doomed!
    ");//没砍完龙头 
    29         else printf("%d
    ", cost);
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    HTML5新特性之离线缓存技术
    摘要
    典藏百度前端面试题
    idea连接mysql数据库
    报错:[stack Error: Can't find Python executable "python"] vue项目npm install
    SVN客户端(小乌龟)checkout(检出)文件(项目)到本地
    java日期Date工具类 日期格式转换
    radio标签 onchange事件
    js 写带有返回值的function遇到的返回值不正常的情况
    读取zip包内根目录文件的文件名
  • 原文地址:https://www.cnblogs.com/New-ljx/p/10575107.html
Copyright © 2011-2022 走看看