題目描述
在 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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289399.html
標籤:其他
