有一条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

5

10

0 0

SAMPLE OUTPUT

11

Loowater is doomed!

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

思路:

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

鬼畜一——cur:

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

鬼畜二——输入:

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

大体过程:

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

下面是AC代码:

 #include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; const int maxn = ; int j[maxn], d[maxn];
//j数组表示骑士的能力值
//d数组表示龙头的直径 int main(){
int n, m;
while(scanf("%d%d", &n, &m) == && n && m){//while循环进行输入,n,m不得为0
for(int i = ; i <= n; i++) scanf("%d", &d[i]);
for(int k = ; k <= m; k++) scanf("%d", &j[k]);
sort(d+, d+n+); //排序
sort(j+, j+m+);
int cost = , cur = ;//cost为最小花费,cur为鬼畜一
for(int i = ; i <= m; i++){
if(j[i] >= d[cur]){//进行比较
cost += j[i];
if(++cur == n) break;//将龙头全砍掉
}
}
if(cur < n) printf("Loowater is doomed!\n");//没砍完龙头
else printf("%d\n", cost);
}
return ;
}

最新文章

  1. HTTP协议(二):header标头说明
  2. css不常用重要属性
  3. PHP的运行机制与原理(底层) [转]
  4. PAT/进制转换习题集
  5. java annotation
  6. 【JAVA、C++】LeetCode 011 Container With Most Water
  7. 通达信:显示K线图日期
  8. 【转载】hadoop的版本问题
  9. Linux - 打印文件夹全部文件 代码(C)
  10. js重写原型对象
  11. 关于Action返回结果类型的事儿(下)
  12. sql大小转换函数
  13. C# list distinct操作
  14. PHP 苹果消息推送
  15. 定义正则new RegExp(&#39;abcd&#39;)
  16. MVVM之旅(1)创建一个最简单的MVVM程序
  17. HDU 1054 Strategic Game (最小点覆盖)【二分图匹配】
  18. tomcat 部署swagger 请求到后端乱码
  19. Visual Studio 2012 智能提示功能消失解决办法
  20. [多问几个为什么]为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?(转)

热门文章

  1. 【新手向】Centos系统文件权限的系统阐述与演示
  2. leetcode423
  3. 部署和调优 1.7 samba 部署和优化-1
  4. WebRTC的拥塞控制技术&lt;转&gt;
  5. easyui中 combogrid控件的loadData方法加载本地数据
  6. SpringBoot04 日志框架之Logback
  7. 数据库之_CRUD
  8. 面试题: 1天的java面试题 已看1
  9. Node.js 介绍及学习
  10. Java基础-集合框架-ArrayList源码分析