题目描述
输入与输出
样例
输入#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
思路一
按照过程分析,释放一次技能,减少一次蓝量,Boss的血量减少一次单次技能的伤害,当蓝量不够下一次技能所消耗或者蓝量小于等于0的时候或者Boss的血量小于等于0的时候退出循环,用一个字母去记录是因为蓝量不够还是因为Boss血量归零退出的循环。
如果是因为Boss血量归零则说明可以击败Boss,否则在蓝量耗尽时Boss还没被击败。
上代码:
#include<iostream>
using namespace std;
int main()
{
int k,m,n;
int s,d;
int sum=0;
int a[30004];
int b[30004];
cin>>k>>m>>n;
for(int i=0;i<m;i++)
{
cin>>a[i]>>b[i];
}
for(int j=0;j<m;j++)
{
int t=0;
s=k;
d=n;
while(1)
{
if(s<a[j]||s<=0)
{
t=1;
break;
}
d-=b[j];
s-=a[j];
if(d<=0)
{
break;
}
}
if(t==0)
{cout<<j+1<<" ";
sum++;}
}
if(sum==0)
{
cout<<"-1"<<endl;
}
return 0;
}
思路二
我们让神牛拼尽全力qwq,那么,
他的总伤害为:使用技能次数*技能伤害
而使用技能次数为: 法力总值/耗法值。
最后,记得如果未输出要输出-1.
注意:
耗法值为0且伤害大于0肯定可以;
伤害为0肯定不行;
# include <iostream>
# include <algorithm>
using namespace std;
int main()
{
int i,j,k,m,n,a,b,l=0;
cin>>k>>m>>n;
for(i=1;i<=m;i++){
cin>>a>>b;
if(a==0&&b>0){cout<<i<<" ";l=1;continue;}
if(b==0)continue;
if(k/a*b>=n){cout<<i<<" ";l=1;}
}
if(l==0)cout<<-1<<endl;
return 0;
}
结束~