hdu 1171 Big Event in HDU(多重背包)

来源:互联网 发布:ubuntu 安装node 编辑:程序博客网 时间:2024/04/28 09:34



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


题目大意:分家,尽可能的平分。

    取这些设施总价值的一半求背包。



代码如下:

#include<iostream>#include<algorithm>#include<cstring>using namespace std;int dp[200000];int main( ){int n,v[51],m[51],i,V,sum,j,k;while(cin>>n){if(n<0)break;sum=0;for(i=0;i<n;i++){cin>>v[i]>>m[i];sum+=v[i]*m[i];}V=sum/2;memset(dp,0,sizeof(dp));for(i=0;i<n;i++)for(k=1;k<=m[i];k++)for(j=V;j>=k*v[i];j--)dp[j]=(dp[j-k*v[i]]+k*v[i])>dp[j]?dp[j-k*v[i]]+k*v[i]:dp[j];cout<<sum-dp[V]<<" "<<dp[V]<<endl;}    return 0;}


0 0
原创粉丝点击