HDU 2159 FATE

来源:互联网 发布:ios 网易彩票源码 编辑:程序博客网 时间:2024/05/08 21:19

http://acm.hdu.edu.cn/showproblem.php?pid=2159

二维费用完全背包

#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;const int Max = 110;struct monster{    int v,w;}node[Max];int N,V1,M,V2;int dp[Max][Max];int main(){//    freopen("in.txt", "r", stdin);    while(scanf("%d%d%d%d",&N,&V1,&M,&V2) == 4){        for(int i=1; i<=M; i++)            scanf("%d%d",&node[i].v,&node[i].w);        memset(dp, 0, sizeof(dp));        for(int i=1; i<=M; i++){            for(int j=node[i].w; j<=V1; j++){                for(int k=1; k<=V2; k++){                    dp[j][k] = max(dp[j][k], dp[j-node[i].w][k-1] + node[i].v);                }            }        }        int k = 0,flag = true;        for(int i=0; i<=V1; i++){            if(!flag)   break;            for(int j=0; j<=V2; j++){                if(dp[i][j] >= N){                    k = i;                    flag = false;                    break;                }            }        }        if(flag)    printf("-1\n");        else printf("%d\n",V1-k);    }    return 0;}


0 0