HDU1171:Big Event in HDU(多重背包分析)
2014-10-17 21:53
246 查看
通过分析,要使A>=B并且差值最小。所以只要使sum/2的容量下,B最大就Ok了
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> using namespace std; #define N 5000000 int dp ; struct Node{ int v,m; }num[1005]; bool cmp(Node a,Node b){ return a.v<b.v; } int main(void) { int n; int i,j,k; while(cin>>n&&n>0){ int sum=0; for(i=1;i<=n;i++){ cin>>num[i].v>>num[i].m; sum+=num[i].v*num[i].m; } sort(num+1,num+1+n,cmp); memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) for(j=1;j<=num[i].m;j++) for(k=sum/2;k>=num[i].v;k--){ dp[k]=max(dp[k],dp[k-num[i].v]+num[i].v); } cout<<sum-dp[sum/2]<<" "<<dp[sum/2]<<endl; } return 0; }
相关文章推荐
- hdu1171 Big Event in HDU(典型多重背包)
- hdu1171 Big Event in HDU(多重背包)
- HDU1171 - Big Event in HDU 动态规划之多重背包
- HDU1171--Big Event in HDU(多重背包)
- hdu1171 Big Event in HDU 01-背包
- hdu1171 Big Event in HDU(多重背包)
- hdu1171 Big Event in HDU (多重背包)
- hdu1171---Big Event in HDU(多重背包)
- HDU1171 Big Event in HDU(01背包的转化,多重背包)
- Big Event in HDU(HDU1171)可用背包和母函数求解
- hdu1171 Big Event in HDU 01-背包
- hdu1171 Big Event in HDU (多重背包)
- HDU1171:Big Event in HDU(多重背包)
- hdu1171--C - Big Event in HDU(多重背包+二进制优化)
- HDU1171:Big Event in HDU(01背包)
- HDU 1171 Big Event in HDU (多重bool背包) /(01背包)
- hdu 1171 Big Event in HDU 多重背包基础题
- hdoj 1171 Big Event in HDU(背包dp+母函数)
- HDU1171-Big Event In HDU(母函数、动态规划)
- hdu 1171 Big Event in HDU(多重背包)