【GDOI2016模拟4.5】刺客 题解

【GDOI2016模拟4.5】刺客

Description

SillyHook是一个著名的刺客,虽然他比较Silly,但他精通打洞,善于深入敌方内部刺杀敌人。
现在SillyHook接到了若干个消灭敌人的任务,每次任务中他都会装备一把耐久度为m 的钩刃,并打洞潜入敌方内部。有n 个待消灭的敌人SillyHook消灭第i 个敌人需要消耗钩刃Ai 点耐久度(如果有其他武器则可以选择用其他武器消灭这个敌人,且不消耗钩刃耐久度),之后便得到他的武器,可以用来消灭任意Bi 个敌人。但SillyHook太Silly了,请你帮他求出每次任务最多可以消灭多少个敌人,且在消灭敌人数量最多的前提下使钩刃消耗的耐久度最少。
注意每次任务之间互不影响。

Input

第一行一个整数T,表示有T次任务。
对于每组数据,第一行包含两个正整数n,m 表示目标数和钩刃的初始耐久度。
接下来n 行每行两个正整数Ai,Bi ,意义如题目所述。

Output

每次任务一行两个整数,表示这次任务中最多能消灭的敌人数量,以及钩刃最少消耗的耐久度。

Sample Input

2
3 5
4 1
5 1
7 7
2 1
2 2
4 0

Sample Output

3 4
0 0

Data Constraint

30%的数据满足Bi=0 。
存在20% 的数据满足n<=10 。
100%的数据满足T<=10,1<=n<=105,1<=m<=109,0<=Ai<=109,0<=Bi<=10。

题解

首先这题显然是贪心。
先讲讲我考场上错误的思路,就是首先舍弃一部分耐久杀掉一个有刀且Ai最小的敌人(如果有刀且 A [ i ] A[i] A[i]最小的敌人的 A [ i ] > m A[i]>m A[i]>m那么就把只能所有人敌人当作 B [ i ] = 0 B[i]=0 B[i]=0的杀了,也就是直接从小到大杀),之后再用拿到的刀按 A i Ai Ai从大到小杀剩下有刀的敌人,再拿总共拿到的刀按 A i Ai Ai从大到小杀完刀的次数,然后拿最后剩的耐久再按

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值