Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem.The shores of Rellau Creek in central Loowater had always been a prime breeding ground for geese.Due to the lack of predators,the geese population was out of control. The people of Loowater mostly kept clear of the geese. Occasionally,

a goose would attack one of the people, and perhaps bite off a finger or two, but in general, the people tolerated the geese as a minor nuisance. One day, a freak mutation occurred, and one of the geese spawned a multi-headed fire-breathing dragon. When the dragon grew up, he threatened to burn the Kingdom of Loowater to a crisp.

Loowater had a major problem. The king was alarmed, and called on his knights to slay the dragon and save the kingdom. The knights explained: “To slay the dragon, we must chop off all its heads. Each knight can chop off one of the dragon’s heads. The heads of the dragon are of different sizes. In order to chop off a head, a knight must be at least as tall as the diameter of the head. The knights’ union demands that for chopping off a head, a knight must be paid a wage equal to one gold coin for each centimetre of the

knight’s height.”

Would there be enough knights to defeat the dragon? The king called on his advisors to help him

decide how many and which knights to hire. After having lost a lot of money building Mir Park, the

king wanted to minimize the expense of slaying the dragon. As one of the advisors, your job was to

help the king. You took it very seriously: if you failed, you and the whole kingdom would be burnt to

a crisp!

Input

The input contains several test cases. The first line of each test case contains two integers between 1 and

20000 inclusive, indicating the number n of heads that the dragon has, and the number m of knights in

the kingdom. The next n lines each contain an integer, and give the diameters of the dragon’s heads,

in centimetres. The following m lines each contain an integer, and specify the heights of the knights of

Loowater, also in centimetres.

The last test case is followed by a line containing ‘0 0’.

Output

For each test case, output a line containing the minimum number of gold coins that the king needs to

pay to slay the dragon. If it is not possible for the knights of Loowater to slay the dragon, output the

line ‘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!

题意:

有n个头的恶龙,你雇佣一些骑士把所有的头砍掉,一共有m个骑士可以雇佣,

一个能力为x的骑士只能砍下恶龙一个直径不超过x的头,而且要支付x个金币。

问:如何雇佣骑士才能砍掉所有恶龙的头,而且要使付出的金币最少。

注意:一个骑士只能砍掉一个头,而且只能被雇用一次!

输入为:

n m

接下来n行为恶龙的头的直径。

再接下来是m行骑士的能力。

如果不能看下所有恶龙的头,输出:

“Loowater is doomed!”

否则输出最少花费、

题目分析:

能力强的骑士尽量不要去派他砍直径小的头,所以, 可以把雇佣来的骑士按照能力大小从小到大排序,

所有的头按照直径也从小到大排序,一个一个砍掉就可以了。如果最小的骑士的能力不能砍掉最小直径

的头,就跳过这个骑士。

代码如下:

#include <stdio.h>
#include <algorithm>
//因为用到了sort
using namespace std; int x[20005];//恶龙的头数
int y[20005];//骑士的能力
int main()
{
int n;
int m;
while(~scanf("%d %d",&n,&m)&&(n||m)){ for(int i=0;i<n;i++){
scanf("%d",&x[i]);
} for(int i=0;i<m;i++){
scanf("%d",&y[i]);
}
sort(x,x+n);
sort(y,y+m); int k=0;//当前需要砍掉的头的编号
int num=0;//当前总费用
for(int i=0;i<m;i++){
if(x[k]<=y[i]){
num+=y[i];//雇佣该骑士
k++;
if(k==n){//头已经砍完,退出循环
break;
}
}
}
if(k<n){
//还有头没砍完
printf("Loowater is doomed!\n");
}else{
printf("%d\n",num);
}
} return 0;
}

UVa 11292 - Dragon of Loowater(排序贪心)的更多相关文章

  1. UVA 11292 Dragon of Loowater(简单贪心)

    Problem C: The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance tur ...

  2. uva 11292 Dragon of Loowater (勇者斗恶龙)

    Problem C: The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance tur ...

  3. [ACM_水题] UVA 11292 Dragon of Loowater [勇士斗恶龙 双数组排序 贪心]

    Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem. The shor ...

  4. UVA - 11292 Dragon of Loowater 贪心

    贪心策略:一个直径为X的头颅,应该让雇佣费用满足大于等于X且最小的骑士来砍掉,这样才能使得花费最少. AC代码 #include <cstdio> #include <cmath&g ...

  5. UVa 11292 Dragon of Loowater (水题,排序)

    题意:有n个条龙,在雇佣勇士去杀,每个勇士能力值为x,只能杀死头的直径y小于或等于自己能力值的龙,只能被雇佣一次,并且你要给x赏金,求最少的赏金. 析:很简单么,很明显,能力值高的杀直径大的,低的杀直 ...

  6. UVa 11292 Dragon of Loowater

    简单贪心 龙头的直径和人的佣金排序,价值小的人和直径小的配 #include<iostream> #include<cstdio> #include<cmath> ...

  7. UVA它11292 - Dragon of Loowater

    Problem C: The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance tur ...

  8. UVa 11292 The Dragon of Loowater 【贪心】

    题意:有一条有n个头的恶龙,有m个骑士去砍掉它们的头,每个骑士可以砍直径不超过x的头,问怎样雇佣骑士,使花的钱最少 把头的直径从小到大排序,骑士的能力值也从小到大排序,再一个一个地去砍头 #inclu ...

  9. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...

随机推荐

  1. Java基础知识强化之IO流笔记06:有return的情况下try catch finally的执行顺序

    1. 给出结论: (1)不管有木有出现异常,finally块中代码都会执行:(2)当try和catch中有return时,finally仍然会执行:(3)finally是在return后面的表达式运算 ...

  2. nginx url 重写 [转]

    本文转自 http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewri ...

  3. php 之 post json 数据

    原文链接 http://www.jb51.net/article/27312.htm 最近用到python 与PHP交互,phthon把json数据post给PHP,但在PHP里面$_post获取不到 ...

  4. Python开发【第八篇】:网络编程

    Python之路[第六篇]:socket   Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字&quo ...

  5. 数据库 ORM框架 ORMLite

    几个ORM框架的比较 先介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思.其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语 ...

  6. ADO.NET基础

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  7. Spring.Net+NHibernate+asp.net mvc + easyui

    毕业4个月的入手项目..前段时间在公司一直做的维护..为了弄明白自己也就跟着写了一个,目前也正在学习:不对的或者是有更好的还请各位赐教. 在学习的过程中主要参考::http://www.cnblogs ...

  8. gephi安装好了,为何打不开?

    ref: http://www.zhihu.com/question/21268129?sort=created 这个软件我自己也没有弄过,不过我同学要不会装,所以我测试地帮她装,得益于这个哥们的发的 ...

  9. Active控件有关问题

    ActiveX 控件是允许网站提供视频等内容的网站. 当你浏览 Web 时,它们允许你使用工具栏.股票代号.视频和其它内容. 但是,这些程序有时可能出现问题,或者向你提供不需要的内容. 在某些情况下, ...

  10. 你好,C++(33)对象生死两茫茫 6.2.3 一个对象的生与死:构造函数和析构函数

    6.2.2  使用类创建对象 完成某个类的声明并且定义其成员函数之后,这个类就可以使用了.一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中 ...