题目:你的王国里有一条n个头的惡龙你希望雇一些骑士把它杀死(即砍掉所有的头)。村里有m个骑士可以雇佣一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币如何雇佣骑士才能砍掉恶龙所有的头,且需要支付的金币最少
注意:一个骑士只能砍一个头(且不能被雇佣两次)。输入格式: 输入包含多组数据每组数据的第一行为正整数n和m(1<=n,m<=20000);以下n行每行为一个整数,即恶龙每个头的直径;以下m行每行为一個整数即每个骑士的能力。输入结束标志为n=m=0
输出格式: 对于每组数据,输出最少花费如果无解,输出“Loowater is doomed!”
这题的目的就是让我们栲虑在总花费最小的情况下,怎么才能把恶龙的头砍掉雇佣的思路就是我们即要让骑士的能力值大于或等于恶龙的直径,又要不能相差太多不能高价请能力值高的骑士来砍直径小的恶龙,这样肯定造成浪费那么我们首先可以把恶龙头的直径、骑士的能力做一个排序,然后从低到高的考虑用能力值对每个直径进行比较,取大于直径的所有能力值中最小的骑士来这样花费最省。最后我们只要将全部能力值比较完之后如果还有恶龙头剩余,那么肯定是无解的
以下采用c++来编程实现:
如果有疑问请留言,欢迎大家一起学习交流我将會不定期的发布算法例题教学以及源码,大家可以关注我哦!