DP练习
我做过的DP
lan_m
这个作者很懒,什么都没留下…
展开
-
luogu P1108 低价购买(方案数)
DP学习DP关于方案数luogu p1108这是一个简单的DP,与方案数有一点关系我们先看第一问,最大购买次数为最长下降序列长度。然后我们要去处理方案数d[i] 表示以 i 结尾时的方案数我们考虑什么时候会有重复当序列的最后一位相等并且序列长度相等,我们要删除重复的方案数/*********************************************************** > File Name: LGP1108.cpp > Author: lan_m &原创 2021-09-13 11:14:49 · 112 阅读 · 0 评论 -
2021-09-13 LGP1450
DP学习luogu p1450嗷~~,DP题,我们有 4 种硬币,每种硬币有不同价值看到这里,我们容易联想到背包,但题目中又有多组数据,数量限制所以不能只跑背包我们要限制硬币的数量,所以可以想到 类似差分前缀和的做法,1 ~ 3 的数量可以表示为1 ~ oo - 4 ~ oo我们可以处理出最大的数量,通过处理加上限制但同时我们要考虑我们减后的影响这时就用到了 容斥原理 我们要减去多的,也要加上少的我还不会容斥原理之后会补一点容斥/********************************原创 2021-09-13 07:54:40 · 39 阅读 · 0 评论 -
2021-09-12 DP LGP1220
DP学习看题面,我们可以考虑如何暴力DP我们可以将1~ n 的关灯顺序缩小到一个区间并且满足无后效性我们每次决策都要考虑向左或向右所以需要一个状态记录在区间的左或右我们可以得到f[i][j][1/0] 表示在 i 到 j 区间内在左 右端点时消耗电/*********************************************************** > File Name: LGP1220.cpp > Author: lan_m > QQ: 2867930原创 2021-09-12 11:50:32 · 62 阅读 · 0 评论 -
luoguP4141 消失之物
LGP4141LGP4141我们首先可以看出这题与背包有关我们先想一个暴力的解法做n次背包,每次得到一个不选 一个物品 W[i] 的方案这样做肯定会T,所以我们想想如何更好的得到答案我们可以先跑一次背包,就得到了 f[i] 表示容量为 i 下的方案数我们需要减去包含 W[i] 的方案数所以用 g[i],表示容量为i 下不选W[i] 的方案数/*********************************************************** > File Name: LGP原创 2021-09-09 22:17:09 · 286 阅读 · 0 评论 -
2021-09-10 P1270 “访问”美术馆 P3360 偷天换日
DP 学习第一道题 luoguP1270直接看题可以看出这是一道关于树的题我们因为在学DP所以这是一道树形DP 根据题目要在给定时间内求出最大可得价值(偷最多的画)我们考虑是否可以分出子问题,子问题如何求解,子问题如何转移也就是要尝试用DP求解用 f[i][j] 去表示在i点下用j时间可获得的最大价值我们考虑转移对于叶子节点 我们取最小的可拿的画与已有的画对于非叶子节点 我们要分配给左右儿子时间取最大值这题的读入较麻烦,我们写一个dfs()去读入顺便建成一棵树然后遍历转移最后的答案为f[1][原创 2021-09-10 11:47:39 · 72 阅读 · 0 评论