- 博客(121)
- 收藏
- 关注
原创 lanqiao OJ 1366 spfa最短路
一个题目的图的规模很大,并且变得权值全部为负数,那么他很可能设置了不利于spfa的测试数据,此时应该用更为稳定的dijkstra算法。
2024-05-14 23:19:16 172
原创 lanqiao OJ 健身
完全被包问题,把休息日的划分变成每一段时间,分别对每一段时间进行完全背包dp,把每一个阶段的dp结果相加,最后得到的就是我们的分段完全背包的答案。
2024-05-13 17:31:29 148
原创 AcWing 274. 移动服务(线性dp)
但是仔细观察可以发现,在第i个请求完成时,一定有某个员工位于位置a[i] ,只需要知道阶段i和另外两个员工的位置即可描述一个状态,处于a[i]的员工位置对dp来说是冗余信息。我们可以简单的想到我们的状态转移方程,f[k][x][y][z] 表示走到 第k个点 ,并且三个人分别在x,y,z的情况下最小的花费。
2024-05-12 17:02:04 152
原创 acwing 275 传纸条 (线性dp)
f[i][x1][x2] 表示 走了 i 步 第一条路径 1,1 从走到 (x1, i - x1) 走了 i 步 第二条路径走到(x2,k-x2) 的最大值。我们对于x1 x2 的遍历取值要有范围。
2024-05-12 14:32:29 119
原创 AcWing 91. 最短Hamilton路径
(S^(1<<j)) >> k & 1 其中(S^(1<<j))的作用是从集合中去掉 j 点, 得到集合S - j , “>> k & 1” 表示用k遍历集合中的 1 , 这些 1 就是 S- j 中的点。(s>>j)&1 判断当前s中有没有 j。
2024-05-10 23:17:27 112
原创 lanqiao OJ 207 大臣的旅费(两次dfs)
1.从任意一个点r出发,求距离他最远的点s。点s肯定是树的直径上的一个端点。2.从点s出发,求距离点s最远的点t。s和t就是最远的两个点,即树的直径。
2024-05-09 18:22:49 118
原创 lanqiao OJ 131 生命之树
状态转移:如果子节点及其子树权值和大于0,则加入父节点u的权值,即f[u] += f[son]。f[i]表示以i为根的子树的最大权值之和。
2024-05-09 17:47:41 110
原创 acwing 285. 没有上司的舞会
对于f[i][1] 也就是我们选择 i 所以进入dfs 我们先将w[i] 加入 f[i][1] 中,然后,我们对于 i 各个孩子,我们都不能取 (因为不能有直接上司),所以我们加 f[j][0](也就是说我们加上不取 j 的时候最大快乐值)对于f[i][0] 也就是我们不选择 i 所以我们可以 1.取子树 f[j][1] 2 . 不取子树 f[j][0] , 两者之间取最大值。f[i][0/1] 表示以i为根节点的子树当选择i或者不选择i时的最大快乐值。
2024-05-09 16:38:44 197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人