算法竞赛入门经典例题-勇者斗恶龙

   最近学习算法竞赛入门经典-训练指南,于是在刷题的同时记录到博客上,以便加深印象,更好的记忆。

例题1.勇者斗恶龙
 你的王国里有一条n个头的恶龙,你希望雇佣一些骑士把它杀死(也就是砍掉所有的头)。村里有m个骑士可以雇佣,一个能力值为 x 的骑士可以砍掉恶龙一个直径不超过 x 的头,且需要支付 x 个金币。如何雇佣骑士才能砍掉恶龙所有的头,并且支付最小的金币?注意,一个骑士只能砍一个头并且仅能被雇佣1次

分析:要求是用最少的钱雇佣骑士杀掉所有恶龙,恶龙的数目肯定不得多于骑士的数目,因为每个骑士只能雇佣一次,就算一个骑士能杀掉所有的恶龙。先对每个骑士和龙的能力进行sort排序,然后遍历骑士,用cur表示斩杀掉的龙,每当一个骑士符合条件被雇佣,cur加1,当cur与龙的数目相等的时候就停止。

#include<cstdio>
#include<algorithm>
using namespace std;

const int maxn=20005;
int</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值