信友队 飞刀传承

飞刀传承

题目ID:8426必做题100分

时间限制: 1000ms

空间限制: 524288kB

题目描述

时间:1s   空间:256M

题目描述:

李家自古以来就是飞刀名门,每一任家主都唤作小李。这一代的小李更是青出于蓝,将祖传的飞刀绝技使得出神入化,年纪轻轻便继承了李家祖传的招式,担下了家主之位。不料有日凶兽来袭,李家满门几尽被灭,只剩少数流落在外的弟子得以幸存。他一度想要自尽,却因李家飞刀绝技不能在他手上断绝的信念支撑了下来,残余一口气。现在他将飞刀之术传于你,希望道力高深的你能够帮助他斩灭凶兽。将来遇到漂泊在外的李家弟子能够将飞刀绝技传承下去。

现在你手里有n把刀,每把刀可飞可砍,对于第i把刀,

  • 如果你用刀砍,将会给凶兽造成xi​点伤害
  • 如果你使用飞刀之术,将会给凶兽造成yi​点伤害,但飞出去之后,这把刀就没了

凶兽的血量为ℎh,问如果将凶兽消灭最少需要几次操作。

输入格式:

第一行输入两个整数,nh  (1<=n<=105 ,1<=ℎ<=109) 

接下去n行,每行两个整数 ai​,bi​ 分别代表砍的伤害和飞的伤害。(1<=ai​<=bi​<=109)

输出格式:

输出一行一个整数,代表最少需要几次操作。

样例输入1:

1 10 3 5

样例输出1:

3

样例输入2:

2 10 3 5 2 6

样例输出2:

2

#pragma GCC optimize(3)
#pragma GCC optimize(2)
#pragma GCC optimize(1)

#include<bits/stdc++.h>
#include<bits/c++config.h>
using namespace std;
const unsigned long long inf=0x10A9FC70042;

int d2[114514];//可用到的单独列
struct dao{
  int a,b;
  bool operator< (const dao&w)const{
    if(b!=w.b){
      return b>w.b;
    }
    
  }
};
dao d[114514];
int main(){
    int n,h;
  cin>>n>>h;
  //int ksum=0;//砍的伤害总值sum
  int maxk=-1919810;//看的最大伤害
  //int fsum=0;;//飞sum(飞刀总伤害)
  for(int i=0;i<n;i++){
    cin>>d[i].a>>d[i].b;
    maxk=max(maxk,d[i].a)  ;
      }
  int sum=0;//打几次
  sort(d,d+n);
  for(int i=0;i<n&&h>0&&d[i].b>maxk;i++){
    h-=d[i].b;//加伤害
    sum++;
    //d[i].a=0;//不能用了
    if(0>=h)/*够打死了**/{
      cout<<sum;//;
      return 0;//结束;
    }
    //ksum=h-fsum;//剩余血量
  }
  if(0>=h)/*够打死了**/{
      cout<<sum;//;
      return 0;//结束;
    }
  sum+=((h+maxk-1)/maxk);
	cout<<sum;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值