03 2014 档案

摘要:题意:有n种硬币,给出每种硬币的面值和个数,问这些硬币能组成多少种小于m的面值。 状态化的多重背包,二进制拆01背包超时,教主本意是要用单调队列来做,不过由于时间限制比较宽松所以可以转完全背包来做。 想法就是新建一个数组来存每种状态中用了多少个第 i 种硬币,在用第 i 种硬币更新状态时,同时更新这个记录数组。 代码如下: #include#includeint bag[100005],use... 阅读全文
posted @ 2014-03-04 17:10 zhen94 阅读(137) 评论(0) 推荐(0) 编辑
摘要:问题描述:二维背包,求达到经验值时耐心的最小消耗,当包内worth达到规定值时跳出返回答案。关于三层循环的顺序:(i:物品种类,c1:cost1,c2,cost2)1、for i = 1 to k for c1 = 1 to c1_max for c2 = 1 to c2_max用每种物品进行更新状态,只有在循环结束时才能得到最优解;每次外层循环++时,某状态下第i种物品使用数便可以确定了,故便于记录第i种物品在某状态中用了多少个。2、for c1 =1 to c1_max for c2 = 1 to c2_max for i = 1 to k这样是对每... 阅读全文
posted @ 2014-03-04 15:43 zhen94 阅读(170) 评论(0) 推荐(0) 编辑