美文网首页
0-1背包问题(动态规划)

0-1背包问题(动态规划)

作者: Alan66 | 来源:发表于2017-06-30 18:24 被阅读0次

http://acm.hdu.edu.cn/showproblem.php?pid=1171
这道题咋看有点复杂,其实也只是换了一种思维,因为题目要求要尽量平均分配,所以我们可以先将总价值sum求出,然后得出其分配的平均值为sum/2,要注意这个答案可能为小数,但是又因为sum是整数,所以最后得出的sum/2是要小于等于实际的值。将这个结果进行01,背包,可以得出其中一个宿舍所得的最大价值,而另一个宿舍的最大价值也可以相应的得到,而前者必定小于等于后者。

include<iostream>

include<cstring>

include<algorithm>

define INF 1000005

using namespace std;

int d[1005][1005];
int v[5005];

int main(){
int n;

while(cin >> n,n>0) {
    int sum = 0;
    for(int i = 1,k = 0;k < n;k++)
    {
        int e,f;
        cin >> e >> f;
        sum += e*f;
        while(f--)
            v[i++] = e;
    }
    for(int i = 1;i <= n;i++)
    {
        for(int j = 0;j <= sum/2;j++){
            d[i][j] = (i == 1?0:d[i-1][j]);
            if(j >= v[i])
                d[i][j] = max(d[i][j],d[i-1][j-v[i]]+v[i]);
        }
    }
    cout << sum - d[n][sum/2] << " " << d[n][sum/2] << endl;
    memset(d,0,sizeof(d));
}
return 0;

}

相关文章

  • 动态规划

    0-1背包问题 自己实现的0-1背包问题的动态规划解法,先贴上吧,动态规划原理解释有空再写。

  • 初识动态规划

    0-1 背包问题 备忘录 动态规划-二维数组 动态规划-一维数组 0-1 背包问题升级版 回溯算法 动态规划-二维...

  • Algorithm进阶计划 -- 动态规划(下)

    经典动态规划背包问题最长子序列问题 1. 背包问题 1.1 0-1 背包问题 0-1 背包问题,描述如下: 上面...

  • 数据结构与算法笔记day23:动态规划

    1初识动态规划 这节课的内容不涉及动态规划的理论,而是通过两个例子:0-1背包问题、0-1背包问题升级...

  • 算法-动态规划-背包问题

    背包问题是基础的动态规划问题,包含了0-1背包,完全背包,多重背包等。 0-1背包 存在容量为 的背包 , 件体...

  • 背包问题

    背包问题属于典型的动态规划问题。这里我们将详细介绍0-1背包,完全背包和多重背包问题 一、 0-1背包 有N件物品...

  • 背包问题

    1、前言 背包问题是典型的动态规划问题,它有非常多的类型,本文讨论最常见的0-1背包问题 0-1背包问题描述:有一...

  • Algorithm

    bit manipulation 动态规划 0-1背包问题 寻找最小的k个数

  • 算法3:动态规划

    5.动态规划5.1 什么是动态规划?5.2 自底向上的动态规划:5.3 自顶向下的动态规划5.4 0-1背包问题:...

  • 动态规划-0-1背包问题

    动态规划-0-1背包问题 动态规划(dynamic programming)是解决多阶段决策问题常用的最优化理论,...

网友评论

      本文标题:0-1背包问题(动态规划)

      本文链接:https://www.haomeiwen.com/subject/kejnzttx.html