USC算法实验1 勇者斗恶龙

在很久很久以前,地上有一个荣光的王国,在这个王国里,国民安居乐业,国王开明勤政。但是突然有一天,有一群恶龙入侵了这个美丽的国家。恶龙们一路杀到了这个国家的首都,王国岌岌可危。

在这个生死攸关的时刻,王国的总共  个勇者们聚集到了首都,在他们当中第  个勇者的能力值为  ,这代表这个勇者能够对恶龙造成  点伤害或者防御住恶龙  的攻击。

与此同时,王国的勇士们获得了恶龙们的情报:在城外总共有  条恶龙,第  条恶龙的防御力为  ,攻击力为  。幸运的是,恶龙们每次只会有一条来进攻首都。并且进攻的顺序为  到  

为了守住城堡,勇士们开始商量策略:

保险起见,勇士们决定每次只派一个勇士出去击杀恶龙,剩下的勇士们将留在城堡中守护首都。为了守住首都,出门迎战的勇士的能力值不能小于恶龙的防御力。而剩下的在首都的城堡里防御的勇士们的能力值之和不能小于恶龙的攻击力。

与此同时,国王拿出了一种神奇的药水(数量无限多),每一瓶药水能够让勇士的能力值短暂的提升  点,药效只能保证勇士们应对一条恶龙,由于神奇药水的效果可以叠加(一个勇士可以同时喝  瓶药增加  点能力值)以及药水数量无限,我们就能保证勇士们一定可以守住每一条恶龙的进攻。

由于神奇药水非常宝贵,因此当然要尽可能少的使用。因为神奇药水的副作用极小,所以国王并不在意哪名勇士喝了多少瓶药水,但是国王想要知道对于**每一条**恶龙,勇士们至少需要多少瓶药水才能打败这一条恶龙?

 

 

 

样例输入 Copy
4
3 6 2 3
5
3 12
7 9
4 14
1 10
8 7

样例输出 
1
2
4
0
2

 

使用到的方法:二分法、贪心选择

核心思想:贪心选择策略的选取为在比龙的防御值小的勇士能力值中找最大,在比龙的防御值大的勇士能力值中找最小。然后在这两种情况下,找出能让药水和最小的一种情况。

!!!代码不分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值