其他分享
首页 > 其他分享> > 赵神牛的游戏

赵神牛的游戏

作者:互联网

题目描述

在 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