C日常语言实践中小(四)——勇者斗恶龙
语言 实践 日常 中小
2023-09-14 09:08:10 时间
勇者斗恶龙
愿你的国有n龙的头,你想聘请骑士杀死它(全部的头)。
村里有m个骑士能够雇佣,一个能力值为x的骑士能够砍掉恶龙一个致敬不超过x的头,且须要支付x个金币。
怎样雇佣骑士才干砍掉恶龙的全部头,且须要支付的金币最少?注意,一个骑士仅仅能砍一个头(且不能被雇佣两次)。
输入格式:输入包括多组数据。每组数据的第一行为正整数n和m(1<=n,m<=20000);下面n行每行为一个整数,即恶龙每一个头的直径。下面m行每行为一个整数。即每一个骑士的能力。输入结束标志为n=m=0.
输出格式:对于每组数据。输出最少花费。
假设无解,输出“Loowater is doomed!”。
例子输入:
2 3
5
4
7
8
4
2 1
5
5
10
0 0
例子输出:
11
Loowater is doomed!
解:此题直接按例如以下思路:龙头大小和骑士能力值排序->分别比較->雇佣满足条件的骑士~就可以~
附上代码:
#include<cstdio> #include <iostream> #include<algorithm> using namespace std; #define MAX 20000 int warriors[MAX]; int dragon[MAX]; int main() { int i, j, sum; int n, m; while(scanf("%d%d", &n, &m) == 2 && n && m) { for(i = 0; i < n; i++) scanf("%d", &dragon[i]); for(j = 0; j < m; j++) scanf("%d", &warriors[j]); sort(dragon, dragon+n); sort(warriors, warriors+m); //将龙头和骑士从小到大排序 j = 0; sum = 0; for(i = 0; i < m; i++) { if(warriors[i] >= dragon[j]) //假设骑士能力值足够,能够砍掉此龙头 { sum += warriors[i]; //雇佣该骑士 j++; } if(j == n) break; } if(j == n) printf("%d\n", sum); else printf("Loowater is doomed!\n"); } return 0; }
执行结果:
相关文章
- C语言中switch语句_switch在c语言中
- 使用python语言编写常见的文本分类算法
- 【R语言】heatmap显示样本类型
- 5.Go语言项目操作之Kafka日志收集项目实践
- 2.Go语言编程学习课后实践
- Go语言开发规范实践指南
- 【测开技能】Java语言系列(八)数组类型
- Go语言中常见100问题-#19 Not understanding floating points
- Go语言中常见100问题-#23 Not properly checking if a slice is empty
- 跟着Nature Communications学作图:R语言ggplot2气泡图组合水平柱形图完整示例
- 【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream )
- Go语言实操笔记,从入职到最佳实践 | 极客时间
- Go语言实操笔记,从入职到最佳实践 | 极客时间
- Linux编程之C语言实践(linuxc语言书籍)
- 编译型语言解释型语言详解编程语言
- Go语言将秒转换为具体的时间
- Linux 下 C 语言项目实践之路(linux c语言项目)
- c语言连接Oracle数据库速度缓慢的挑战(c 连接oracle很慢)
- 使用c语言实现Oracle数据库连接池(c语言OracLe连接池)
- Go语言链接Oracle数据库的实践记录(go 链接oracle)
- MySQL上机实验感受简单易学,依靠实践掌握SQL语言,加深理解数据库系统概念,增强对数据处理能力认知
- c语言多进程tcp服务器示例