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

hdu 3008 Warcraft(DP)

时间:2015-03-11 16:46:03      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

题意:

小明和BOSS开始都有100的生命值。小明开始时拥有100魔法值。

小明有N个魔法技能。每个技能消耗ai魔法值同时伤害BOSS bi生命值。

每一秒结束后小明如果还活着则会自动增加魔法值t。【增完魔法值不能超过100】

问小明最少需要多少秒把BOSS干掉。如果没办法干掉输出“MY GOD”。

BOSS每秒伤害小明Q点血。

 

思路:

小明被BOSS干掉的时间一开始就已知。所以只要判断在小明死之前能否把BOSS干掉即可。

第一秒小明选一个技能打,第二秒小明选一个技能打。第三秒......

DP结构出来。

dp[i][j]:第i秒结束后小明还剩j点魔法值时给BOSS选成的最大伤害是多少。

*: DP采用从当前推下一个的方式很好写。

 

代码:

struct node{
    int magicCost;
    int lifeCost;
}
skill[105];


int n,q,t;
int dp[105][105];


int main(){

    while(scanf("%d%d%d",&n,&t,&q),n||q||t){
        rep(i,1,n){
            scanf("%d%d",&skill[i].magicCost,&skill[i].lifeCost);
        }
        mem(dp,-inf);
        dp[1][100]=1;
        rep(i,1,n){
            dp[1][100-skill[i].magicCost+t]=skill[i].lifeCost;
        }
        int N=100/q+((100%q)!=0);

        rep(nowSecond,1,N-1){
            rep(magicValue,0,100){
                if(magicValue+t<=100){
                    dp[nowSecond+1][magicValue+t]=max( dp[nowSecond+1][magicValue+t],dp[nowSecond][magicValue]+1 );
                }else{
                     dp[nowSecond+1][100]=max( dp[nowSecond+1][100],dp[nowSecond][magicValue]+1 );
                }
                rep(i,1,n){
                    if(magicValue>=skill[i].magicCost){
                        dp[nowSecond+1][min(100,magicValue-skill[i].magicCost+t)] =
                            max( dp[nowSecond+1][min(100,magicValue-skill[i].magicCost+t)],dp[nowSecond][magicValue]+skill[i].lifeCost );
                    }
                }
            }
        }
        int ans=-1;
        rep(second,1,N){
            rep(magicValue,t,100){
                if(dp[second][magicValue]>=100){
                        ans=second; break;
                }
            }
            if(ans!=-1) break;
        }
        if(ans!=-1){
            printf("%d\n",ans);
        }else{
            puts("My god");
        }
    }

    return 0;
}

 

hdu 3008 Warcraft(DP)

标签:

原文地址:http://www.cnblogs.com/fish7/p/4330118.html

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