codeforce div3 d Fight with Monsters

在这里插入图片描述
题目大致说的就是两个人一起打怪兽,我的攻击力为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;
}
发布了48 篇原创文章 · 获赞 17 · 访问量 4479

猜你喜欢

转载自blog.csdn.net/weixin_45757507/article/details/104186751