站外题求调50分
  • 板块题目总版
  • 楼主dgz61
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/7/24 11:08
  • 上次更新2025/7/24 15:59:16
查看原帖
站外题求调50分
1064274
dgz61楼主2025/7/24 11:08

题目描述

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

现在你手里有n把刀,每把刀可飞可砍,对于第i把刀,如果你用刀砍,将会给凶兽造成 xix_i点伤害,如果你使用飞刀之术,将会给凶兽造成yiy_i点伤害,但飞出去之后,这把刀就没了。凶兽的血量为h,问如果将凶兽消灭最少需要几次操作。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,h,cnt=0,Max=INT_MIN;
struct node{
	ll a,b;
}s[1000000+10];
bool cmp(node n1,node n2){
	return n1.b>n2.b;
}
int main(){
	cin>>n>>h;
	for(ll i=1;i<=n;i++) cin>>s[i].a>>s[i].b,Max=max(Max,s[i].a);;
    sort(s+1,s+n+1,cmp);
	for(ll i=1;i<=n && h>0;i++){
		h-=s[i].b;
		cnt++;
	}
	if(h>0){
		if(h%Max==0) cnt+=(h/Max);
		else cnt+=(h/Max+1);
	}
	cout<<cnt;
	return 0;
}
2025/7/24 11:08
加载中...