赵神牛的游戏
作者:互联网
题目描述
在 DNF 中,赵神牛有一个缔造者,他一共有 k 点法力值,一共有 m个技能,每个技能耗费的法力值为ai,可以造成的伤害为ibi,而 boss 的体力值为 n,请你求出它放哪个技能,才可以打死 boss。
当然,赵神牛技术很菜,他一局只放一个技能,不过每个技能都可以放无数次。
输入格式
第一行有三个整数,分别表示 k,m,n。
后面 m行,每行两个整数,第 (i + 1)行的整数表示耗费的法力值 ai,和造成的伤害bi。
输出格式
输出仅一行,即可以杀死 boss 的技能序号,如果有多个,按从小到大的顺序输出,中间用一个空格隔开;如果没有技能能杀死 boss,输出 -1
。
输入输出样例
输入 #1
100 3 5000 20 1000 90 1 110 10000
输出 #1
1
输入 #2
50 4 10 60 100 70 1000 80 1000 90 0
输出 #2
-1
说明/提示
数据规模与约定
对于全部的测试点,满足:
0≤n,m,k≤30000,
1≤ai,bi≤2147483647
本题思路:先循环判断技能所需的法力值是否小于赵神牛的总法力值。
大于则进入下一个循环,小于则判断赵神牛只是用该技能能否杀死boss
不能杀死进入下一个循环,可以杀死输出当前技能的序号
注意:只要当技能所需的法力值为0,且技能伤害高于0时,赵神牛就可以杀死该boss
代码:
#include<iostream>
using namespace std;
int main()
{
int k,m,n;
int mp[30010],hit[30010];//题上所给m的范围是30000,所以数组开到30000以上就可以了。
cin>>k>>m>>n;
int a=0;//判断赵神牛的所有技能能否杀死boss。
for(int i=0;i<m;i++)
{
cin>>mp[i]>>hit[i];
if(mp[i]==0&&hit[i]>0)//当技能所需法力值为0且技能伤害大于0就可输出该技能的序号。
{
a=1;
cout<<i+1<<' ';//因为i从0开始,所以技能序号为i+1
}
else if(mp[i]>0&&mp[i]<=k)
{
if(k/mp[i]*hit[i]>=n)//判断赵神牛使用该技能能不能杀死boss
{
a=1;
cout<<i+1<<' ';
}
}
}
if(a==0)//若赵神牛不能杀死boss,输出-1;
{
cout<<"-1"<<endl;
}
return 0;
}
标签:赵神,游戏,法力,int,boss,杀死,技能 来源: https://blog.csdn.net/qq_52337851/article/details/118893246