摘要: 原题链接 考察:线性dp 思路: 很容易想到f[i][j]表示前i趟运了j头牛的最小时间(本蒟蒻虽然想到了但因为会T放弃了这个想法,所以会T的做法先想想看能不能优化啊啊啊) 所以f[i][j] = f[i-1][k]+sum[j-k]+2*m(这里会在最后一次多算一次m,最后答案减去即可).最后答案 阅读全文
posted @ 2021-04-01 22:22 acmloser 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形背包dp 思路: 首先我们需要拿一个变量作为背包的体积,不能以钱数做体积,因为范围没有给定.所以只能以人数做体积.f[i][j]表示以i为根节点的子树中,选j个人的最大花费.如果>=0表示方案可行.因为人数是可以枚举的,所以不会漏解. 这里要注意的是背包体积不能直接设为m,否则会 阅读全文
posted @ 2021-04-01 19:10 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:背包dp 思路: 做之前看成01背包,然后答案一直不对,醉了. 实际是完全背包,因为需要的东西不超过5类,且不超过5个,所以可以用5维数组.5类物品的数目都是体积. 需要将编号离散化,这里用的是map映射. 但是注意的是我的本地IDE 在mp[x] = mp.size()是从1开始, 阅读全文
posted @ 2021-04-01 14:28 acmloser 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:多重背包dp 思路: 多重背包板子,然后注意压掉一重循环需要倒序体积.... 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 typedef long lo 阅读全文
posted @ 2021-04-01 01:35 acmloser 阅读(64) 评论(0) 推荐(0) 编辑