现在的位置: 首页 > 综合 > 正文

HDU 3008 Warcraft

2013年10月07日 ⁄ 综合 ⁄ 共 736字 ⁄ 字号 评论关闭
#include<stdio.h>
#include<string.h>
#include <math.h>
int skillCost[110];
int skillhurt[110];
int dp[110];//dp[i][j]表示第i轮攻击,boss还剩下j滴hp时候剩下的最大mp
int max(int a,int b)
{
	return a>b?a:b;
}
int main()
{
	int n,t,q;
	while(scanf("%d%d%d",&n,&t,&q), n + t + q)
	{
		int T;
		T = ceil(100.0 / q);
		memset(dp,-1,sizeof(dp));
		dp[100]=100;
		int i,j,k;
		for(i=1;i<=n;i++)
			scanf("%d%d",&skillCost[i],&skillhurt[i]);
		skillCost[0]=0;
		skillhurt[0]=1;
		bool flag=false;
		for(i=1;i<=T;i++)
		{
			for(j=1;j<=100;j++)
			{
				if(dp[j]!=-1)
				{
					for(k=0;k<=n;k++)
					{
						if(j<=skillhurt[k]&&dp[j]>=skillCost[k])
						{
							printf("%d\n",i);
							flag=true;
							break;
						}
						else if(j>skillhurt[k]&&dp[j]>=skillCost[k])
							dp[j-skillhurt[k]]=max(dp[j-skillhurt[k]],
										dp[j]-skillCost[k]+t);
					}

				}
				if(flag==true)
					break;
			}
			if(flag==true)
				break;
		}

		if(flag==false)printf("My god\n");
	}
	return 0;
}

抱歉!评论已关闭.