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
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!\n");//没砍完龙头 29 else printf("%d\n", cost); 30 } 31 return 0; 32 }
转载于:https://www.cnblogs.com/New-ljx/p/10575107.html
UVa 11292 勇者斗恶龙(The Dragon of Loowater)相关推荐
- 勇者斗恶龙(The Dragon of Loowater, UVa 11292)
勇者斗恶龙(改编)(The Dragon of Loowater, UVa 11292) 你的王国里有一条 n 个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头).村 里有 m 个骑士可以雇佣,一个 ...
- acm的STL容器之队列篇 及 UVa 11292 - Dragon of Loowater 小根堆解法(贪心算法)
2018-07-17 优先队列,即Priority Queues 1.简单介绍一下队列(介绍功能,不作分析) C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构. 1.back ...
- 贪心/思维题 UVA 11292 The Dragon of Loowater
题目传送门 1 /* 2 题意:n个头,m个士兵,问能否砍掉n个头 3 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 4 */ 5 #include <cstdio> 6 #i ...
- 勇者斗恶龙UVa 11292
例题1 勇者斗恶龙(The Dragon of Loowater, UVa 11292) 你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头).村里有m个骑士可以雇佣,一个能力值为x ...
- 历史上的今天(history)+ 勇者斗恶龙(dragon)
朋友们我来了,好久都没有更新了,手实在痒痒,不撸两道,内心过意不去 文章目录 A:历史上的今天(history) 题目 题解 代码实现 B: 勇者斗恶龙(dragon) 题目描述 题解 代码实现 A: ...
- UVA11292 HDU1902 POJ3646 The Dragon of Loowater【贪心】
问题链接:UVA11292 HDU1902 POJ3646 The Dragon of Loowater. 题意简述:(略) 问题分析: 这个问题是一个典型的贪心法问题,求代价最小. 由于需要用到排序 ...
- 【Dragon of Loowater】【UVA - 11292】(思维)
题目: Once upon a time, in the Kingdom of Loowater, a mi- nor nuisance turned into a major problem. Th ...
- Uva 11292 The Dragon of Loowater 模拟题
题目大意:你的王国里有一条有n个头的恶龙,你希望雇一些骑士来把它杀死(即砍掉所有的头).村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币.如何雇佣骑士才 ...
- 【UVA - 11292】Dragon of Loowater (贪心,水题,模拟,twopointer双指针)
题干: 题目大意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要花费的最少金币. 解题报告 ...
最新文章
- PHP 汉字转拼音(首拼音,所有拼音)
- python合并多个csv文件_python pandas合并多个csv文件
- 在ubuntu用arm ds-5社区版配合linaro交叉编译工具开发android linux应用
- Git 使用遇到的各种问题
- 深入理解 PHP7 中全新的 zval 容器和引用计数机制
- 作者:贵芳(1991-),女,合肥工业大学计算机与信息学院硕士生
- JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
- Centos 6.9 编译安装gcc 4.8.5
- ELK-Metricbeat安装及使用
- [IT技术]改变计算技术的伟大算法
- 40行代码自己动手写pdf转word小工具(文末附工具下载)
- Linux消息队列的设置及查看
- visio软件接口流程图_绘制流程图——Visio可以让你事半功倍哦!
- 数学之美系列—布隆过滤器(Bloom Filter)
- mysql拼音码自动生成_根据中文名,自动生成首字母的拼音码或拼音码(两种方法)...
- 浅谈IO_Link模块与现场总线模块
- 多关键词采集搜索引擎URL网址域名
- VScode主题字体(正体,斜体修改)
- batch软件功能测试,Batch SMART 最强序列特征[结构域]预测软件
- 脚本语言、编程语言、中间件
热门文章
- java jdk 加密_jdk实现常见的加密算法
- PAT 乙级 1046. 划拳(15) Java版
- html css 圆形按钮 仿uc,10款基于jquery的web前端动画特效
- 如何在MySQL中设置外键约束
- ZJOI2019 线段树
- Nginx+keepalive反向代理
- 使用内部(com.android.internal)和隐藏(@hide)API手记
- Linux的用户和组管理
- 写了个简单的pdo的封装类
- RabbitMQ集群和失败处理