tjut 3008

#include <stdio.h>  
#include <string.h>  
typedef struct{  
    int ai;  
    int bi;  
}node;  
int max (int a,int b)  
{  
    return a > b ? a : b ;  
}  
int main ()  
{  
    node skill[110];  
    int n,t,q,i,j,k,p;  
    int dp[110];  
    while (scanf ("%d%d%d",&n,&t,&q))  
    {  
        p = 0;  
        if (n == 0 && t == 0 && q == 0)  
            break;  
        for (i = 1 ; i <= n ; i++)  
            scanf ("%d%d",&skill[i].ai,&skill[i].bi);  
        skill[0].ai = 0;  
        skill[0].bi = 1;  
        memset (dp,-1,sizeof(dp));  
        dp[100] = 100;  
        int time = (100 % q == 0) ? 100/q : 100 / q + 1 ;//英雄在time回合内要打到boss;  
        for (i = 1 ; i <= time ; i ++)  
        {  
            for (j = 1 ; j <= 100 ; j ++)  
            {  
                if (dp[j] == -1)  
                    continue;  
                for (k = 0 ; k <= n ; k ++)  
                {  
                    if (j <= skill[k].bi && dp[j] >= skill[k].ai)  
                    {  
                        printf ("%d\n",i);  
                        p = 1;  
                        break;  
                    }  
                    else if (j > skill[k].bi && dp[j] >= skill[k].ai)  
                    {  
                        dp[j - skill[k].bi] = max (dp[j - skill[k].bi],dp[j] - skill[k].ai + t);  
                        if (dp[j + skill[k].bi] > 100)  
                            dp[j + skill[k].bi] = 100;  
                    }  
                }  
                if (p)  
                    break;  
            }  
            if(p)  
                break;  
  
        }  
        if (!p)  
            printf ("My god\n");      
    }  
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值