POJ 2576 Tug of War二维背包恰好装满.
2013-03-27 21:22
92 查看
像这种恰好装满的情况可以用bool数组,恰好装满为true,否则为false。
还有就是逆向推倒,0-1背包,f[i][j]表示有i个人,组成了j的体重,这样的话在考虑某人的情形时,f[i][j]为真的前提就是f[i-1][j-wi]为真,其中wi为这个人的体重
View Code
还有就是逆向推倒,0-1背包,f[i][j]表示有i个人,组成了j的体重,这样的话在考虑某人的情形时,f[i][j]为真的前提就是f[i-1][j-wi]为真,其中wi为这个人的体重
View Code
#include <cstdio> #include <cstring> #include <cmath> bool f[110][2500]; int main() { int n,w[110],sum = 0; scanf("%d\n",&n); memset(f,false,sizeof(f)); f[0][0] = true; for(int i=0; i<n; i++) { scanf("%d",&w[i]); sum += w[i]; } int v = n/2; for(int i=0; i< n; i++) { for(int j = v; j >= 0; j--) { for(int k=sum; k >= 0; k--) { if( j >=1 && k>= w[i] &&f[j-1][k-w[i]]) f[j][k] = true; } } } int mi1=0,mi2=sum; double dif = sum; for(int i=sum-1; i>=0; i--) { if(f[v][i] && dif>fabs(sum-2*i)) { mi1 = i; mi2 = sum-i; dif = fabs(sum-2*i); } } if(mi1 > mi2) printf("%d %d\n",mi2,mi1); else printf("%d %d\n",mi1,mi2); return 0; }
相关文章推荐
- POJ 2576 Tug of War 二维费用背包
- POJ 2576 Tug of War 二维背包 OR 随机化
- poj2576 Tug of War(二维费用背包)
- 动态规划:POJ2576-Tug of War(二维费用的背包问题)
- POJ 2576 Tug of War
- POJ 2576 Tug of War(模拟退火)
- POJ 2576 Tug of War
- poj2576-Tug of War(二维背包)
- POJ 2576 / Light OJ 1147 Tug of War 状态压缩DP
- Tug of War(严格限制数量的二维费用背包)
- DP背包问题小结(01背包,完全背包,需恰好装满或不需,一维DP、二维DP)
- 多重背包POJ1276不要求恰好装满 poj1014多重背包恰好装满
- poj1384完全背包恰好装满
- dp之二维背包poj2576
- POJ 2576 二维背包
- Light OJ 1147 Tug of War (背包+状压)
- POJ2576 Tug of War (二维的01背包)
- lightoj 1147 - Tug of War 动态规划
- UVA - 10032 Tug of War (二进制标记+01背包)
- poj 1948 二维01背包