题目链接:
cf1296D Fight with Monsters
题目解析:
本题在教我们如何合理抢人头
把怪物的hp对两个人的攻击力之和取余,如果余数小于a的攻击力,就不需要发动能力。否则,需要发动 (余数-a)/a的攻击力+1 次(整除无需加一)能力
把每个怪需要发动能力的次数预处理出以后,排序,遍历即可
AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k;
int x,t[200010];
int main()
{
scanf("%d%d%d%d",&n,&a,&b,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
int h=x%(a+b);
if(h==0) h=a+b;
if(h<=a) t[i]=0;
else if((h-a)%a!=0) t[i]=(h-a)/a+1;
else t[i]=(h-a)/a;
}
sort(t+1,t+n+1);
//cout<<t[1]<<endl;
int ans=0;
for(int i=1;i<=n;i++)
{
if(k<t[i]) break;
k-=t[i];
ans++;
}
printf("%d\n",ans);
}