Advertisement

多重背包问题 HDU 1059

阅读量:

Marsha与Bill共同拥有若干块大理石,他们希望将这些藏品进行分配,使得双方各自获得的份额相等。若所有大理石的价值完全一致,这将是一个简单的问题,因为只需将整体分成两部分即可。然而实际情况并非如此,部分大理石在尺寸或美观程度上存在差异。因此,Marsha和Bill首先为每一块大理石赋予一个数值,该数值为1至6之间的自然数。现在他们需要对这些大理石进行分割,以确保双方获得的总价值相等。
然而他们发现按照这种方式进行分割可能并不总是可行的(即使所有大理石的总价值是偶数)。例如,当存在一块价值为1的大理石、一块价值为3的以及两块价值为4的时,则无法将其划分为两个总价值相等的部分。因此,他们希望你编写一个程序来判断是否存在合理的分割方式。

实际上这是一个多重背包问题,在已知总价值的情况下,只需判断是否能够恰好达到总价值的一半,并且该数值必须为偶数。

代码如下;

复制代码
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1.2e5 + 10;
    int dp[maxn];
    
    int main() {
    //	freopen("in.txt", "r", stdin);
    //	freopen("out.txt", "w",

全部评论 (0)

还没有任何评论哟~