#175. [UVa 11292]The Dragon of Loowater

[UVa 11292]The Dragon of Loowater

题目描述

在 Loowater 王国,一条多头恶龙从河边孵化出来,开始威胁整个王国!国王非常惊慌,召集了所有骑士来斩杀恶龙,拯救王国。

恶龙有 nn 个头,每个头有一个直径。骑士有 mm 个,每个骑士有一个身高。

规则如下

  • 一个骑士只能砍掉一个龙头。
  • 一个骑士只能砍掉直径 \leq 自己身高的龙头(即骑士身高 hjh_j \geq 龙头直径 did_i
  • 雇佣一个骑士需要支付的金币数 = 该骑士的身高
  • 骑士一旦被雇佣,就只能砍一个头,不能重复使用

国王想知道:最少需要支付多少金币,才能砍掉恶龙的所有头?
如果骑士不够或没有合适的骑士能砍掉所有头,就输出 Loowater is doomed!

输入格式

输入包含多组数据,每组数据描述一个测试用例。

  • 每组数据的第一行:两个整数 nnmm1n,m200001 \leq n, m \leq 20000),分别表示恶龙头数和骑士数量
  • 接下来 nn 行:每行一个整数,表示恶龙每个头的直径
  • 接下来 mm 行:每行一个整数,表示每个骑士的身高
  • 输入以一行 0 00\ 0 结束(不处理这组数据)

输出格式

对于每组数据,输出一行结果:

  • 如果可以砍掉所有头,输出一个整数:最少需要的金币总数。
  • 如果不可能,输出字符串:Loowater is doomed!

样例1

2 3
5
4
7
8
4
2 1
5
5
10
0 0
11
Loowater is doomed!

样例解释

第一组数据

  • 龙头直径:5,45, 4
  • 骑士身高:7,8,47, 8, 4
  • 最优方案:用身高 77 的骑士砍直径 55 的头,用身高 44 的骑士砍直径 44 的头,总金币 7+4=117 + 4 = 11(身高 88 的骑士不用)。

第二组数据

  • 龙头直径:5,55, 5
  • 骑士身高:1010
  • 只有一个骑士,无法砍掉两个头 → Loowater is doomed!

数据范围与提示

  • 1n,m200001 \leq n, m \leq 20000
  • 所有直径和身高均为正整数