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

HDU 2159 FATE 二维0-1背包

2014年09月05日 ⁄ 综合 ⁄ 共 450字 ⁄ 字号 评论关闭

 

 

dp[i][j]记录疲劳度用了i,杀了j个怪所获得的最大经验。

 

View Code

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[103][103];
int w[103],p[103];
int main()
{
    int n, m, k, s, i, j, x;
    while(~scanf("%d%d%d%d",&n,&m,&k,&s))
    {
        for(i=1;i<=k;i++)
            scanf("%d%d",&p[i],&w[i]);
        memset(dp,0,sizeof(dp));
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=s;j++)
                for(x=1;x<=k;x++)
                    if(i>=w[x])dp[i][j]=max(dp[i][j],dp[i-w[x]][j-1]+p[x]);
            if(dp[i][s]>=n)break;//经验够了就可以停了
        }
        printf("%d\n",m-i);
    }
    return 0;
}

 

 

抱歉!评论已关闭.