题解 CF1654G Snowy Mountain

先一遍 BFS 求出 hi

考虑每个点滑雪的最优路径是什么。是先不重复经过点,滑到一个点 x,其中点 x 满足其与一个相同高度的点相连。在 x 与旁边这个点横跳,直到能量耗尽,最后滑下到底。

假设从点 i 出发,能找到 x 的最小高度是 fi,那么 i 的答案应当是 2×hifi。于是题目转化为对每个点找到能到达的最小高度的 x 点。

令所有符合条件的 x 点构成集合 S,我们容易发现 iShiO(n) 级别的。所以本质不同的 hiO(n) 级别的。

对每个符合的高度求出能不能到所有点就行了。可以通过分层的 BFS,对每层找到每个点需要多少能量 di 可以到达符合的 x 点就行了,每层之间传递然后到下一层,单次是线性复杂度。具体地,如果 xy 有边:

  • 在同一层:dx 可以用 max(dy+1,1) 更新。
  • 不在同一层:dx 可以用 dy1 更新。

总时间复杂度是 O(nn)

我的代码写得太复杂,就不放了。

posted @   Little09  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示