Logo __vector__ 的博客

博客

ABC344F 题解

...
__vector__
2025-12-01 12:55:59

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-03-14 20:05:49

题外话

代码量挺大,赛时没想到思路,会了思路后写了半个点才过

思路

考虑最优路径是什么。
显然,每个点如果需要购买,那么需要购买的物资应该在起始节点到本节点路径中价格最便宜的节点购买($p$ 值最大)。

换句话说:

假设最优路径路径上第 $a_1,a_2,\cdots,a_l$ 点进行了购买操作。
那么不存在 $j \lt a_i$,满足 $p_j \gt p_{a_i}$。

现在我们要考虑什么 dp 状态已经清晰了:

  • 目前所在的节点
  • $(1,1)$ 到当前节点路径上的最低价格

另外,对于 dp 值,首先需要维护题目要求的最少操作次数,其次,还需要计算到达当前节点剩余的物资。

dp[i][j][k][l] = pair<int,int>

维护个 queue 跑 dp 就搞定了(其实就是 bfs)
复杂度 $O(n^4)$。

submission

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。