本文主要是介绍uva 11292 - Dragon of Loowater(贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:uva 11292 - Dragon of Loowater
题目大意:王国里有n头恶龙,m个勇士,每个勇士有不同的能量值l[i], 以击杀恶龙头直径d[j]小于l[i]的恶龙。雇佣能量值为l[i]的勇士需要l[i]的金钱,每个勇士只能被租用一次,问说如何租用勇士击杀恶龙所用的金钱最小。
解题思路:虽然大白上讲的很清楚,但还是自己写下题解加深印象吧。
为了使得金钱的总额最小,那么就要雇佣能量值小得去击杀恶龙,但是又必须保证能将恶龙杀死,所以对于每个恶龙来说,需要租用能量值尽量小且大于恶龙头的直径的勇士,并且没有被租用过。
#include <stdio.h>
#include <string.h>
#include <algorithm>using namespace std;const int N = 20005;int n, m, d[N], l[N];void init() {for (int i = 0; i < n; i++)scanf("%d", &d[i]);sort(d, d + n);for (int i = 0; i < m; i++)scanf("%d", &l[i]);sort(l, l + m);
}bool judge() {int i, j, ans = 0;for (i = j = 0; i < n && j < m; j++) {if (d[i] <= l[j]) {i++, ans += l[j];}}if (i < n) return true;printf("%d\n", ans);return false;
}int main () {while (scanf("%d%d", &n, &m), n + m) {init();if (judge()) printf("Loowater is doomed!\n");}return 0;
}
这篇关于uva 11292 - Dragon of Loowater(贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!