摘要: 题目链接 思路 以后再也不用 \(Floyd\) 了,堆优化 \(Dijkstra\) 首选。 预处理最短路,\(k\) 个点枚举即可。 代码 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #i 阅读全文
posted @ 2020-10-29 22:30 tuscjaf 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 题目链接 补充 样例输入 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 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 这道题乍一看像是最短路,但又不知道从何下手。 考虑枚举每个节点,假设两个人到第 \(i\) 个节点相遇,剩下的路程一块走,那么我们很容易得出当前的能量为 \(dis_{1~to~i} \times B + dis_{2~to~i} \times E + dis_{i~to~n} * 阅读全文
posted @ 2020-10-26 22:13 tuscjaf 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 贪心法,先将所有的 \(?\) 设置为 \()\) ,然后进行括号匹配,如果不匹配,则查找前面最优的 \()\) 换成 \((\) ,对此我们可以用一个堆来维护。 代码 #include <cstdio> #include <cstring> #include <queue> #in 阅读全文
posted @ 2020-10-26 21:01 tuscjaf 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 一眼看出考虑用动态规划。 分析,末尾 $0$ 的个数与因数 $2,5$ 的个数有关,那么我们输入的数组直接分别预处理成 $2$ 的个数与 $5$ 的个数就可以了。 其次,我们 $2,5$ 的状态分别转移,取最终的最小值(因为如果没有 $5$ ,取更多的 $2$ 也没用)。 存储路径然 阅读全文
posted @ 2020-10-25 19:20 tuscjaf 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 转化为背包模型,设 \(dp[i][j]\) 为挑选第 \(i\) 个物品时高度为 \(j\) 的累计能量值, 容易发现,状态转移的条件需要当前的时间小于等于当前的累计能量值,也就是 \(dp[i][j] \le t[i]\), 接下来可以选择吃掉或者不吃,分类讨论: 不吃 \(dp 阅读全文
posted @ 2020-10-25 12:57 tuscjaf 阅读(48) 评论(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 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 最小生成树模板题。 \(Prim\)。 代码 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 2e2 + 10; struct node { 阅读全文
posted @ 2020-10-24 09:53 tuscjaf 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 最短路模板题,我们把第一个到达的点的边权设置成 $0$ ,其他为 $1$ 即可,跑一边最短路即可。 代码 #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <util 阅读全文
posted @ 2020-10-24 09:33 tuscjaf 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 第一联想到最短路解决血量剩余最多的路径,但是这道题有一个条件,必须使路径上的最大的点最小。 那么我们可以把点权从小到大排序,然后二分查找最小的能到达奥格瑞玛的路径。 也就是说,我们设置当前二分到的点权为该条路上最大的点权,那么进行最短路的时候,我们需要判断通向的点是否小于当前二分到的 阅读全文
posted @ 2020-10-24 09:11 tuscjaf 阅读(69) 评论(0) 推荐(0) 编辑