首页 技术 正文
技术 2022年11月15日
0 收藏 444 点赞 2,941 浏览 996 个字

勇者斗恶龙

你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。

村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,

且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?

注意,一个骑士只能砍一个头(且不能被雇佣两次)。

[输入]

输入包含多组数据。每组数据的第一行为正整数n和m(1≤n,m≤20 000);

以下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!

package 第六次模拟;import java.util.Arrays;
import java.util.Scanner;public class Demo4勇者斗恶龙 {
public static void main(String arg[]) {
final int maxn = 20000 + 5;
int[] A = new int[maxn];
int[] B = new int[maxn];
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
//有n m控制,不需要重置数组
int n = sc.nextInt(), m = sc.nextInt();
//结束的标志 0 0
if(n==0&&m==0)return;
for (int i = 0; i < n; i++)
A[i] = sc.nextInt();
for (int i = 0; i < m; i++)
B[i] = sc.nextInt();
Arrays.sort(A, 0, n);
Arrays.sort(B, 0, m);//数组从0到m范围从小到大排序int cost = 0, num = 0;
for (int i = 0; i < m; i++) {
//只要勇士打得过就打,因为是从小到大排序了
//所以只要打的过一定是打得过的最小的那个,花费最小
if (A[num] <= B[i])
cost += B[i];
//每次我都++,直到把所有的龙都打死
if (++num == n)
break;
}
if (num < n)
System.out.println("Loowater is doomed!");
else
System.out.println(cost);
}
}}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,412
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,185
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905