CF1654G Snowy Mountain
https://www.luogu.com.cn/problem/CF1654G
有点厉害的题。
首先 可以通过 bfs 求出来。考虑最优方案是什么,一定是从当前的 的跳到最低的 ,然后 的能操作 2。
先理理有什么性质:
-
倘若一个点 的高度是 ,那么一定能操作一 次,即走这条链。
-
相邻的节点的高度差不超过 1。
-
倘若两个相邻的节点的高度相等,那么一定两个节点的两端一定有 2 条不相交的长度相等的链直到黑色节点。
下文中把相邻高度相等的节点叫做特殊点(即能操作 2 的)。
那么,如何处理出每个节点能到达的高度最小的特殊点呢?考虑暴力,从小到大枚举高度,看看是否有这个高度的特殊点,然后从这些点出发,令 为 点到当前高度的特殊点中的最小所需储备能量。即想要从 点跳到特殊点在跳到 的时候至少要 的能量。显然特殊点都是 0,考虑类 bfs 转移。
-
,说明中间只能操作 2 到达,那么 y 的能量储备要更多。
-
,说明 可以通过 多出 1 点能量,那么 。
需要注意的是,任何时候都要满足 ,才能使得没有错误的转移(在相等时转移会出锅)。
分析到这里,会发现这个暴力应该是对的。
我们只要考虑所有特殊点的种类即可。
考虑构造点被特殊点两端的链覆盖尽可能多的次数,发现好像只能构造到
这个样子,其中最多 个点被多覆盖到了 1 次,其他点都是只有 次覆盖的。也就是说 的级别是 的,那么种类是 级别的,考虑只在 出现。
做完了。
__EOF__

本文作者:F x o r G
本文链接:https://www.cnblogs.com/xugangfan/p/16223063.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/xugangfan/p/16223063.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】