2258 - 勇士斗恶龙 (fight.cpp)

题目描述

  小 X 穿越到了异世界,国王命令他招揽勇士,杀死恶龙,救回公主。
  异世界是高度数据化的。恶龙有一个攻击力 ATK,一个生命值 HP。类似的,每个勇士也有一个攻击力 Ai,一个生命值 Hi。
  战斗是回合制的,并且每次只能由一个勇士和恶龙单挑。战斗中,每个回合恶龙的生命值会减去这个勇士的攻击力,这个勇士的生命值会减去恶龙的攻击力。
  如果回合结束的时候恶龙的生命值小于等于 0,那么恶龙就被杀死了;如果这个勇士的生命值小于等于 0,那么这个勇士就被击败了,需要换上另一个勇士继续战斗。当然,如果恶龙还没有被杀死,勇士却全部被击败了,那么这场战役就彻底失败了。
  不过聪明的小 X 安排了一个特殊的战术:在一名勇士被击败后立刻让另一名勇士发起攻击,这样恶龙在勇士们的车轮战术下疲于招架,受到第二个勇士的伤害变为两倍,受到第三个勇士的伤害变为三倍……以此类推。
  现在一共有 n 名勇士报名,小 X 想问问你,如果合理安排勇士出战的顺序,最少要招揽多少名勇士才能杀死恶龙?

输入

第一行为一个正整数 n,表示一共有 n 名勇士报名。
第二行两个正整数 ATK 和 HP 表示恶龙的攻击力和生命值。
接下来共有 n 行,每行两个正整数 Ai 和 Hi 表示这名勇士的攻击力和生命值。

输出

输出一个整数,表示最少要招揽多少名勇士才能杀死恶龙。
如果不可能杀死恶龙,输出”Fail”。

样例

输入

2
1 9
2 2
1 1

输出

2
说明

样例解释
两名勇士都招揽。先派出 2 号勇士第一回合,恶龙生命值变为 8,勇士生命值变为 0。勇士被击败 紧接着派出 1 号勇士
第二回合,恶龙生命值变为 4(两倍伤害),勇士生命值变为 1
第三回合,恶龙生命值变为 0,勇士生命值变为 0。恶龙被杀死
勇士虽然也被击败了,但恶龙已经死了,所以还是胜利了!

数据范围
本题共有 10 个测试点
对于测试点 1-4 :n<=5,ATK,Hi,Ai<=10,HP<=100
对于测试点 5-7 :n<=1000,ATK,Hi,Ai<=1000,HP<=10^9
对于测试点 8-10 :n<=10^5,ATK,Hi,Ai<=10^6,HP<=10^18

来源

2020常州市程序设计小能手(小学组)比赛试题 T5

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 327
通过人数 95
金币数量 2 枚
难度 基础


上一题 下一题