当前位置: 首页 > news >正文

2025春训第二十场

问题 B: 狗是啥呀

题目描述

在神秘的地狱深处,有着一种神秘的犬类生物,据传这种生物长了x个脑袋,并且具有强大的生命力。由于见过它的人全都下落不明,至今没有人知道它的真面目。

一位勇士为了斩杀这奇怪的生物,来到地狱一探究竟。勇士做了充足的准备,他在身上携带了n种武器,每种武器每次可以击毙这种生物di个头,但这种生物在这之后会吸收武器产生的能量,再长出hi个头。当它的头的数量小于等于0时,它就会被击败(且不能重新长出头)。注意,每种武器可以无限次使用。

作为勇士的智囊团中的一员,你需要告诉勇士,他最少需要使用多少次武器才能击败这种生物。

输入

输入第一行包含两个整数n,x,分别表示勇士的武器种类数与生物头的数量。

之后n行,每行给出di,hi。

输出

输出共一行,表示最少需要使用多少次武器。若不能击败,则输出 -1。

样例输入 Copy
【样例1】
3 10
6 3
8 2
1 4
【样例2】
4 10
4 1
3 2
2 6
1 100
【样例3】
2 15
10 11
14 100
样例输出 Copy
【样例1】
2
【样例2】
3
【样例3】
-1
提示

样例 1 解释:可以先使用一次第一个技能,生物还剩下个10-6+3=7个头。第二次使用第二个技能,剩下7-8=-1<0 个头,则直接被击败。

对于100%的数据,保证1≤n≤100,1≤x,di,hi≤109

错了好几遍。用武器砍,选武器-生长最大的 。最后一次选最厉害的武器直接砍掉

特判武器-生长都是负数,但是可以直接杀掉的

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,x;
ll d[109],h[109],k[109],m=0,c,q=0;
int main(){cin>>n>>x;for(int i=0;i<n;++i){cin>>d[i]>>h[i];k[i]=d[i]-h[i];}for(int i=0;i<n;++i){if(m<k[i]){m=k[i];c=i;}q=max(d[i],q);//cout<<"!"<<k[i]<<'\n';}if(q>=x){cout<<1;return 0;}if(m<=0){cout<<-1;return 0;}//cout<<x<<" "<<m<<'\n';ll z=x-q;ll ans=1+z/m+(z%m!=0?1:0);cout<<ans;return 0;
}

相关文章:

  • 【51】快速获取数码管段选表(含小数点)及字母表的工具(分享)
  • CMake基础及操作笔记
  • 布隆过滤器深度解析
  • muduo库EventLoopThread模块详解——C++
  • 牛客OJ在线编程常见输入输出练习--Java版
  • CE17.【C++ Cont】练习题组17(堆专题)
  • 18-总线IIC
  • Java大师成长计划之第25天:Spring生态与微服务架构之容错与断路器模式
  • 软件安全检测报告:如何全面评估企业级办公软件安全性?
  • .NET 中管理 Web API 文档的两种方式
  • Oracle APEX IR报表下载CSV文件的方法
  • lc42接雨水
  • 江协科技OLED移植hal库
  • gcc 源码目录文件夹功能简介
  • 2020CCPC河南省赛题解
  • c++动态链接库
  • 电子电路:电位器和可变电阻是同一个东西吗?
  • CT重建笔记(五)—2D平行束投影公式
  • [已解决] LaTeX “Unicode character“ 报错 (中文字符处理)
  • 硬件工程师笔记——二极管Multisim电路仿真实验汇总
  • 墨西哥海军一载两百余人帆船撞上纽约布鲁克林大桥,多人落水
  • 上海这个咖啡文化节首次“走出去”,率本土品牌亮相英国伦敦
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业
  • 江西4人拟任县(市、区)委书记,其中一人为“80后”
  • 学者三年实地调查被判AI代笔,论文AI率检测如何避免“误伤”
  • 上海:到2027年,实现近海航线及重点海域5G网络高质量覆盖