随笔分类 -  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\) 阅读全文
posted @ 2020-10-28 23:43 tuscjaf 阅读(88) 评论(0) 推荐(0)
摘要:题目链接 思路 一眼看出考虑用动态规划。 分析,末尾 $0$ 的个数与因数 $2,5$ 的个数有关,那么我们输入的数组直接分别预处理成 $2$ 的个数与 $5$ 的个数就可以了。 其次,我们 $2,5$ 的状态分别转移,取最终的最小值(因为如果没有 $5$ ,取更多的 $2$ 也没用)。 存储路径然 阅读全文
posted @ 2020-10-25 19:20 tuscjaf 阅读(61) 评论(0) 推荐(0)
摘要:题目链接 思路 转化为背包模型,设 \(dp[i][j]\) 为挑选第 \(i\) 个物品时高度为 \(j\) 的累计能量值, 容易发现,状态转移的条件需要当前的时间小于等于当前的累计能量值,也就是 \(dp[i][j] \le t[i]\), 接下来可以选择吃掉或者不吃,分类讨论: 不吃 \(dp 阅读全文
posted @ 2020-10-25 12:57 tuscjaf 阅读(62) 评论(0) 推荐(0)
摘要:题目链接 思路 大眼一看是一个背包问题,但是多了一个附属条件 \(b_i\),那么我们可以考虑两个物品的先后顺序如何最优。 考虑两个物品 \(x ,y\)。 如果 \(x\) 在 \(y\) 之前选的话,收益就是: \(a_x - b_x \times (t + c_x) + a_y - b_y \ 阅读全文
posted @ 2020-10-25 10:30 tuscjaf 阅读(77) 评论(0) 推荐(0)
摘要:题目链接 思路 正难则反。 求出保留的,即最长上升子序列,从头和从尾各求一遍,最后枚举出最大的保留的位数, 然后用 \(n\) 减去保留位数加 $1$ 即可。 代码 #include <cstdio> #include <cstring> #include <algorithm> using nam 阅读全文
posted @ 2020-10-18 12:02 tuscjaf 阅读(86) 评论(0) 推荐(0)