Processing math: 100%
/* 返回顶部 */

随笔分类 -  动态规划————背包

摘要:gate 背包dp+容斥,然而没想出来。 首先预处理出没有限制的方案数。 价值为ci的硬币有di个,那么不合法的方案数即为f[ci(di+1)],因为若ci超出限制,后面的再怎么选都是不合法的了。 但这样显然会有重复计算。所以,根据容斥原理,减去1种超限的,加上2种超限的 阅读全文
posted @ 2020-05-28 23:11 Mogeko 阅读(156) 评论(0) 推荐(0) 编辑
摘要:gate 背包。 设f[i]为构成重量i的方案数。 则:f[i] = f[i]+f[i-c[i]] 每次更新,记录f[i]是由哪个张牌转移过来的,为pre[i] 为了防止重复(为什么会重复?),仅在当前pre[i]不存在时更新。 且只能从不为0的状态转移过来。 最后判断f[m], 大于1则多解,小于 阅读全文
posted @ 2019-11-12 22:11 Mogeko 阅读(177) 评论(0) 推荐(0) 编辑
摘要:gate 这题一看就是没有思路啊_(:3」∠)_ 看起来像是类似货币系统那种背包,但是没有给定物品... 数据范围并不是很大,大概是O(搜索能过) 所以用dfs枚举每一种可能的邮票方案,再dp判断当前方案能表示的最大连续面值 dp: 枚举用几张邮票?显然不行。数组下标应该是面额,那么... 设b[i 阅读全文
posted @ 2019-11-01 22:18 Mogeko 阅读(139) 评论(0) 推荐(0) 编辑
摘要:gate 很久以前就想做了,但是我太菜了不会qwq 这题的思路相当好啊! 因为垃圾掉下来是有时间顺序的,所以要先按时间排序 我刚开始写的是f[j]表示生命值为j时的最大高度。 不过因为生命值是随时间减少的,以时间作为一维, 下标必须要计算上一个垃圾的时间-当前垃圾的时间……总之状态转移会很麻烦x 根 阅读全文
posted @ 2019-10-22 16:45 Mogeko 阅读(116) 评论(0) 推荐(0) 编辑
摘要:gate 求01背包前k优解的价值和(题面还挺亲切的) 本来我想的是直接边跑01背包边记录,最后排序... 然后意识到,这种方法是枚举不全的。 看了眼题解...要多开一维! k的范围很小,f[i][j]表示空间为i,是第j优解。 那么,因为有许多j,所以对于每个不一样的j, f[i][j]既可能从f 阅读全文
posted @ 2019-10-21 20:01 Mogeko 阅读(108) 评论(0) 推荐(0) 编辑
摘要:gate 多重背包+01背包 以下是我的bug: i<<=1写成i<<1... 价值和体积写反了... 一开始脑残了全写的多重背包,半红半蓝...后来反应过来,二次函数好像没法用二进制优化... 改完还是40',然后注意到ax2+bx+c,x是可以等于0的... 边界改了之后变成20',发现不 阅读全文
posted @ 2019-10-21 16:39 Mogeko 阅读(238) 评论(0) 推荐(0) 编辑
摘要:gate 我太菜了,看了标签是背包还不知道是怎么回事qaq 看了下题解,意识到这是个类似素数筛的东西。 感性理解可以发现,原货币系统中能被表示出来的是可以不选的,剩下的就是要选的。所以最小的一定要选,把原货币系统从小到大排序。 枚举原货币系统中的货币a[i],枚举金额j(a[i]+1<j<a[n]) 阅读全文
posted @ 2019-10-08 17:57 Mogeko 阅读(144) 评论(0) 推荐(0) 编辑
摘要:传送门 多重背包板子题, 多重背包就是每种东西有好几个,可以把它拆分成一个一个的01背包 优化:二进制拆分(拆成1+2+4+8+16+...) 比如18=1+2+4+8+3,可以证明18以内的任何数都可以用这几个数的和表示, 所以就把2个,4个....绑定为一个物品,和一个一个的效果是一样的 这样就 阅读全文
posted @ 2019-01-19 15:38 Mogeko 阅读(117) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示