码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 5246 超级赛亚ACMer 贪心

时间:2015-06-01 16:46:28      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   编程   

分析:先把每个挑战者的战斗力升序排序,接着找出离m最近的小于m的挑战者的战斗力,然后从该处开始,对后面的每个挑战者进行处理,尽量使百小度提升战斗力后等于后一个挑战者的战斗力。如果激发战斗力后还无法打赢则不行,否则使其相等。

#include<iostream>
#include<algorithm>
using namespace std;

int main()      
{
	int T,t,n,m,k,i;
	__int64 a[10005];
	__int64 cnt;
	int tmp;
	bool fg;

	cin>>T;
	t=0;
	while(T--)
	{
		cin>>n>>m>>k;
		for(i=0;i<n;i++)
			scanf("%I64d",&a[i]);

		sort(a,a+n);           //从小到达排序
		cout<<"Case #"<<++t<<":"<<endl;
		if(a[0]>m)
		{
			puts("madan!");
			continue;
		}
		if(a[n-1]<=m)
		{
			puts("why am I so diao?");
			continue;
		}
		fg=true;
		cnt=m;
		for(i=0;i<n;i++)
			if(a[i]>m)
			{
				cnt=a[i-1];
				tmp=i;
				break;
			}
		for(i=tmp;i<n;i++)
			if(cnt+k<a[i])
			{
				fg=false;
				break;
			}
			else
			{
				cnt=a[i];
				if(k>0) k--;
			}
		if(fg) puts("why am I so diao?");
		else puts("madan!");
	}
    return 0;      
}


HDU ACM 5246 超级赛亚ACMer 贪心

标签:c   c++   acm   算法   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/46311143

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!