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. [转] boost::function用法详解

    http://blog.csdn.net/benny5609/article/details/2324474 要开始使用 Boost.Function, 就要包含头文件 "boost/fun ...

  2. CentOS修改SSH默认端口

    1. 修改配置文件 vim /etc/ssh/sshd_config 修改 #Port 22 这行,  去掉 #  修改后面的端口号 例如 Port 2123 重启sshd服务 /etc/init.d ...

  3. JS可控制的图片自动循环播放查看效果

    JS可控制的图片自动循环播放查看效果 <html> <head> <title>JS可控制的图片自动循环播放查看效果丨芯晴网页特效丨CsrCode.Cn</t ...

  4. C#解leetcode 53.Maximum Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  5. PHP PDO 简单登陆操作

    用PHP做出一个简单的登陆操作,确实很简单,下面就让我给大家简单的介绍一下PDO做出一个登陆界面操作的过程,因为也是初学乍练,不足之处请大家包涵. 首先,首先还要建一个表,在MySQL中建表,核心代码 ...

  6. Java学习----对象的状态和行为

    1.什么是对象 对象是已知的事物 对象会执行动作 类是对象的蓝图 2.对象的属性和状态 使用变量来描述 private String name; private int age; private St ...

  7. ActiveX控件资料

    Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(1) 分类: C#2011-05-27 15:50 403人阅读 评论(0) 收藏 举报 c#stringhook ...

  8. git config --global core.excludesfile配置gitignore全局文件

    Linux中,这时把全局要忽略的文件列表.gitignore放当前用户根目录下: git config --global core.excludesfile '~/.gitignogtire' Win ...

  9. javascript mvc 简单例子

    <!DOCTYPE html> <html> <head> </head> <body> <input type="text ...

  10. 编写可维护的javascript代码---开篇(介绍自动报错的插件)

    文章开篇主要推荐了2款检测编程风格的工具: JSLint和JSHint: jsLint是由Douglas Crockford创建的.这是一个通用的javascript代码质量检测工具,最开始JSLin ...