cf--D. Fight with Monsters 贪心

D. Fight with Monsters

传送门:http://codeforces.com/problemset/problem/1296/D
题意:

你和你的朋友去打怪兽轮流攻击,你的伤害是a,你朋友的伤害是b,然后告诉你可以使用k次技能,你的技能是让你朋友的攻击无效,然后告诉你有n只怪兽的血量;

思路:

我们可以看作两个人一起攻击,然后最后打的一次还剩多少血量,最后除以a,如果是我最后还要打几次,然后进行排序,先对剩余最少的血量进行贪心,由于第一次是我打,所有将怪兽的血量减一;

AC代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
	ll n,a,b,k;
	vector<int>vi;
	cin>>n>>a>>b>>k;
	for(int i=0;i<n;i++)
	{
		ll x;
		cin>>x;
		int y=(x-1)%(a+b)/a;//把每个怪兽能使用k的次数记住; 
		vi.push_back(y);
	}
	sort(vi.begin(),vi.end());
	int ans=0;
	for(int i=0;i<vi.size();i++)
	{
		if(k>=vi[i])	k=k-vi[i],ans++;//使用技能的次数 
		if(k<=0)	break;
	}
	cout<<ans<<endl;
	return 0;
}
发布了39 篇原创文章 · 获赞 1 · 访问量 574

猜你喜欢

转载自blog.csdn.net/qq_45249273/article/details/104304331
今日推荐