题目大致说的就是两个人一起打怪兽,我的攻击力为a,我对手攻击力b,我有一个魔法让我的对手停止行动一个回合,我永远先手,秘法可以放k次,问我最多可以打死多少怪兽(就是最后一刀,拿到人头)
题目解法也很简单,先把怪物的血量对a+b取模,直接算到a能直接打死或a打完b能直接打死的情况(注意如果取模为0要使其加上a+b)之后开始考虑a几次可以打死这个boss,施法所需次数也就是这样,但需要注意的是a每次都是先手所以如果刚好被a整除的情况下需要发动技能会少一,利用整形的性质,先对这个数减一后再取(因为如果不是整除的话,一定会自动向下取整减一夜没有任何影响)就可以很好的解决这个问题,之后对其所需施法次数排序,从小到大取即可得到答案
代码如下
#include<bits/stdc++.h>
using namespace std;
int f[200005];
int main()
{
long long int n,a,b,k,ans=0;
cin>>n>>a>>b>>k;
for(int i=1;i<=n;i++)
{
cin>>f[i];
f[i]=f[i]%(a+b);
if(f[i]==0)f[i]=a+b;
f[i]=(f[i]-1)/a;
}
sort(f+1,f+n+1);
for(int i=1;i<=n;i++)
{
if(k>=f[i])
{
ans++;
k-=f[i];
}
else break;
}
cout<<ans<<endl;
return 0;
}