UVA 562(01背包)
2015-12-10 14:11
239 查看
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=503
以sum/2为背包总量,结果为sum-d*dp[V]
以sum/2为背包总量,结果为sum-d*dp[V]
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> using namespace std; #define MEM(a,b) memset(a,b,sizeof(a)) #define pf printf #define sf scanf #define debug printf("!\n") #define INF 8000 #define MAX(a,b) a>b?a:b #define blank pf("\n") #define LL long long #define ep 1e-6 int dp[INF]; int way[INF][INF];//保存路径 int ci[INF];//容量 int wi[INF];//价值 int n,V,i,j,v,t,sum; double G; void zeroOnePack(int cost,int weight) { for(v = V;v>=cost;v--) { dp[v] =MAX(dp[v],dp[v-cost]+weight); } } int main() { int t; sf("%d",&t); while(t--) { MEM(dp,0); MEM(way,0); MEM(wi,0); sf("%d",&n); sum = 0; for(i = 1;i<=n;i++) { sf("%d",&wi[i]); sum+=wi[i]; } G = (double)sum/2; V = (int)G; for(i = 1;i<=n;i++) { zeroOnePack(wi[i],wi[i]); } pf("sum:%d\n",sum-2*dp[V]); } return 0; }
相关文章推荐
- 老李分享:浏览器引擎的介绍
- html判断id是否存在
- C++获取可使用的COM口列表
- Cpp--STL的组成
- 零基础入门学习Python(6):列表(续)
- event.preventDefault()方法的使用
- 开发环境中biztalk项目设置注意事项(转)
- UI视图控件、视图嵌套、SubView、Tag 的使用
- spring 与struts 整合
- Win8.1无法安装msi软件提示2502、2503错误怎么解决?
- 20151208,微软12月8日发布12个安全补丁
- java EE中的任务定时器,当到某个时间的时候执行相应的操作
- Effective C++ 一个简单的 String 类的 Reference Counting 实现(C++)
- JS模态窗口返回值兼容问题解决方案
- 成员变量和属性
- GCD
- 剑指offer系列之二十七:数组中出现次数超过一半的数
- 简单实用的 Ubuntu 快捷键
- 设计模式之访问者模式
- listview添加头部后判断是否到达顶部的方法