首页 > 其他 > 详细

hdoj 2159 (带限制的完全背包)

时间:2018-05-03 21:22:17      阅读:192      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int dp[110][110];
int n,m,k,s;
int w[110];
int val[110];
int main ()
{
    ios::sync_with_stdio(false);
    while (cin>>n>>m>>k>>s) {
        for (int i=1;i<=k;i++)
            cin>>val[i]>>w[i];
        memset (dp,0,sizeof(dp));
        for (int i=1;i<=k;i++)
            for (int j=w[i];j<=m;j++)
                for (int t=1;t<=s;t++)
                    dp[j][t]=max (dp[j][t],dp[j-w[i]][t-1]+val[i]);
        int i;
        for (i=1;i<=m;i++)    
            if (dp[i][s]>=n) break;
        if (i>m) cout<<"-1\n";
        else      cout<<m-i<<"\n";
    }
    return 0;
}

 

hdoj 2159 (带限制的完全背包)

原文:https://www.cnblogs.com/xidian-mao/p/8987468.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!