UVA - 11292 Dragon of Loowater (贪心)

题目大意:有n条龙和m个勇士,每条龙和每个勇士有对应的能力值,消灭一条龙的条件是这个勇士的能力大于等于这条龙,请一个勇士要付出其能力值大小的金币,现要求将所有的龙的消灭并使所使用的金币达到最小

解题思路:将龙的能力和勇士的能力都排序一下.

因为要让金币达到最小且要消灭所有的龙,所以尽量用能力值最接近勇士去消灭龙

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 20010
int D[maxn], K[maxn];
int main() {
	int n, m;
	while(scanf("%d%d",&n ,&m) == 2 && n + m) {
		for(int i = 0; i < n; i++)
			scanf("%d",&D[i]);

		for(int j = 0; j < m; j++)
			scanf("%d",&K[j]);

		sort(D,D+n);
		sort(K,K+m);
		
		int start = 0, money = 0;
		for(int i = 0; i < m; i++) {
			if(K[i] >= D[start]) {
				money += K[i];
				start++;
			}
			if(start >= n)
				break;	
		}

		if(start < n)
			printf("Loowater is doomed!\n");
		else
			printf("%d\n",money);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值