随笔分类 - SF-DP
动态规划,记忆化搜索,DP
摘要:题目链接 补充 样例输入 6 1 3 2 3 3 4 4 5 4 6 0 2 1 2 -1 样例输出 2 1 思路 题目描述了一个树形结构,我们考虑使用树形 \(DP\) ,由于多了一个限制条件:一个客户端只有一个服务器。 那么我们设置三种状态: \(dp[u][0]\) 表示当前节点 \(u\)
阅读全文
摘要:题目链接 思路 一眼看出考虑用动态规划。 分析,末尾 $0$ 的个数与因数 $2,5$ 的个数有关,那么我们输入的数组直接分别预处理成 $2$ 的个数与 $5$ 的个数就可以了。 其次,我们 $2,5$ 的状态分别转移,取最终的最小值(因为如果没有 $5$ ,取更多的 $2$ 也没用)。 存储路径然
阅读全文
摘要:题目链接 思路 转化为背包模型,设 \(dp[i][j]\) 为挑选第 \(i\) 个物品时高度为 \(j\) 的累计能量值, 容易发现,状态转移的条件需要当前的时间小于等于当前的累计能量值,也就是 \(dp[i][j] \le t[i]\), 接下来可以选择吃掉或者不吃,分类讨论: 不吃 \(dp
阅读全文
摘要:题目链接 思路 大眼一看是一个背包问题,但是多了一个附属条件 \(b_i\),那么我们可以考虑两个物品的先后顺序如何最优。 考虑两个物品 \(x ,y\)。 如果 \(x\) 在 \(y\) 之前选的话,收益就是: \(a_x - b_x \times (t + c_x) + a_y - b_y \
阅读全文
摘要:题目链接 思路 正难则反。 求出保留的,即最长上升子序列,从头和从尾各求一遍,最后枚举出最大的保留的位数, 然后用 \(n\) 减去保留位数加 $1$ 即可。 代码 #include <cstdio> #include <cstring> #include <algorithm> using nam
阅读全文

浙公网安备 33010602011771号