UVA 11292 The Dragon of Loowater
其实很水的。。。看题目花的时间比写的时间更久。
题意是 一个龙有n个头 头都有直径 有m个骑士 骑士有身高 如果身高超过直径 骑士就能砍下龙头 一个骑士只能砍一个头 国王雇佣骑士 价格是骑士的身高 求国王最少要多少钱才能杀掉龙 如果杀不掉 就输出 Loowater is doomed!
贪心思想,直接骑士和龙头都从小到大排,从最小的骑士开始选去砍龙头。。
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int MAXN = 20005;
int n, m, d[MAXN], k[MAXN], ans;
void init() {
ans = 0;
for (int i = 0; i < n; i ++)
scanf("%d", &d[i]);
for (int i = 0; i < m; i ++)
scanf("%d", &k[i]);
}
void solve() {
init();
sort(d, d + n);
sort(k, k + m);
int j = 0;
for (int i = 0; i < m; i ++) {
if (k[i] >= d[j]) {
ans += k[i];
j ++;
if (j == n) {
printf("%d\n", ans);
return;
}
}
}
printf("Loowater is doomed!\n");
}
int main() {
while (~scanf("%d%d", &n, &m) && n + m) {
solve();
}
return 0;
}