摘要: 动态规划中的01背包问题。 题意是给两个数组分别表示每只牛的幽默感和智商,求全体牛的一个子集使得子集中所有牛的幽默感和智商和的总和最大,条件是幽默感总和和智商总和不能为负数。如果把幽默感当成重量,智力值当成价值(或者相反)就变成了普通的01背包问题了。但是有一个问题就是值可能出现小于0的情况— —,肿么办?凉拌……可以像本体的主流做法一样开二倍数组把原点移到100000,或者也可以每次计算都把a[i]加上1000,然后单独开一个数组,记录子集的大小,即多用的1000的个数。 采用第二种方法,则如果01背包中的状态转移方程为f[i] = max(f[i], f[i - w[j]] + v[j]. 阅读全文
posted @ 2011-08-05 17:39 like@neu 阅读(347) 评论(0) 推荐(0) 编辑