发喷山火(volcano)+CF2119F Volcanic Eruptions 解题报告

news/2025/9/18 22:33:10/文章来源:https://www.cnblogs.com/STDJCY/p/19099851

发喷山火

神题

先来初步挖掘一下这个走路过程的性质:

  1. 初始时 \(S=1\),且 \(S\le 0\) 就死了,所以在没有走到 \((1,1)\) 之前,只能走 \((1,-1)\) 的边。
  2. 由于你和岩浆走路速度相同,所以一旦路径中你已经触碰到岩浆,那么你无论如何都逃不出去了,所以触碰过岩浆等价于最后停下的位置没有岩浆。

由性质1,如果没有经过 \((1,1)\) 的边,那么一定是 \(1,-1,1,-1,\dots\) 交替走。否则先来分析经过 \((1,1)\) 的情况,这显然是强于没有的情况的。

我们试图刻画一下最优走法的形态。往返是不好处理的,我们将在一条边上来回走的行为称为掉头,那么不难发现,在没有经过 \((1,1)\) 之前就掉头一定是不优的,因为我们可以将这些掉头全部放到 \((1,1)\) 的边上不停掉头。

然后就可以将走法刻画成一个简单的形态:一条链外接一条尽头为 \((1,1)\) 边的支链

volcano.png

得到形态后,考虑固定住终点 \(ed\),那么所有满足要求的 \((1,1)\) 就是从主链分出去的各个支链中满足到起点的路径都是 \((1,-1)\) 中最靠近主链的。

接下来考虑表示出答案,记 \(dep_{u}\) 表示根到 \(u\) 的距离。对于一条从 \(st\to ed\) 的路径,其对起点 \(st\) 的贡献是什么?根据前面的分析,没有碰到岩浆等价于最后终点 \(ed\) 没有碰到岩浆,所以到达时间 \(t\le dep_{ed}\),这样就不用考虑岩浆了,再分析一下取到的上界。注意到走掉头边是不会改变路径长度奇偶性的,原来的简单路径长度奇偶是 \(dep_{st}\oplus dep_{ed}\),那么奇偶性不会变,有 \(t\equiv dep_{st}\oplus dep_{ed}\pmod 2\)。那么最终的答案可以表示为 \(dep_{ed}-[(dep_{st}\oplus dep_{ed})\not\equiv dep_{ed}\pmod 2]\),化简为 \(dep_{ed}+(dep_{st}\bmod 2)-1\)

我们发现,这个答案的式子中只需要对 \(st\) 求出 \(\displaystyle\max_{st\to ed\texttt{ is valid}} dep_{ed}\)

弱化版(只有一个 \(st\))---CF2119F Volcanic Eruptions

\(st\) 为根,考虑对 \(ed=u\) 处理贡献。用 \(dis_u\) 表示到点 \(u\) 的距离,\(s_u\) 表示到点 \(u\)\(w\) 贡献和。对于一条支链 ,用 \(k\) 表示从主链到最近的 \((1,1)\) 的距离,从这条支链往下走到 \(u\) 的路径最低点为 \(mi\),设 \(x\) 表示在 \((1,1)\) 上的掉头次数。由于要在 \(dep_{u}\) 时间之前到 \(u\),所以 \(dis_{u}+2k+2x<dep_u\),即 \(x\le \left\lfloor\dfrac{dep_u-dis_u-1-2k}{2}\right\rfloor\),并且要保证走 \(v\to u\) 这条路时生命值始终为正,即 \(mi+2x\ge 1\),即 \(x\ge \left\lceil\dfrac{-mi+1}{2}\right\rceil\),只需要 \(x\) 有取值即可,等价于满足:

\[\left\lceil\dfrac{-mi+1}{2}\right\rceil\le \left\lfloor\dfrac{dep_u-dis_u-1-2k}{2}\right\rfloor \\ \Rightarrow \left\lceil\dfrac{-mi+1}{2}\right\rceil\le \left\lfloor\dfrac{dep_u-dis_u-1}{2}\right\rfloor-k \\ \Rightarrow k\le \left\lfloor\dfrac{dep_u-dis_u-1}{2}\right\rfloor-\left\lceil\dfrac{-mi+1}{2}\right\rceil \]

于是可以在 \(\mathrm{dfs}\) 的过程中维护上述信息,时间复杂度 \(O(n)\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab免费下载安装激活教程(附安装包下载)MATLAB R2025a超详细下载安装教程

MATLAB R2025a是2025年工科必备的工程计算软件,不管是大学生做课程设计、研究生写论文,还是工程师搞项目研发,用它处理矩阵运算、建模仿真都特别方便。新版本运算速度比上一代快35%,还新增了新能源、自动驾驶专用工…

Spring Boot + flowable 完美结合,快速实现工作流 - 教程

Spring Boot + flowable 完美结合,快速实现工作流 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

Pyfluent 执行Meshing工作流

1. 部署安装pyfluent Pyfluent支持Fluent 2022R2或更高版本,PyFluent支持Python 3.10~3.13版本,点击 此处 即可下载。 安装核心依赖需使用pip命令,如若详细了解该命令的使用,详见 此处 pip install ansys-fluent-c…

EF Core 与 MySQL:日志和调试详解

本文将详细讲解EF Core与MySQL的日志和调试,分为三个部分:EF Core日志配置、MySQL日志查看以及使用调试工具分析查询性能。 1. 配置 EF Core 日志 基本日志配置// 在DbContext配置中启用日志记录 protected override…

使用镜像源解决github拉取代码问题 - GD

命令行输入以下语句: git config --global url."https://gitclone.com/github.com/".insteadOf "https://github.com/" 取消设置: git config --global --unset url."https://gitclone.com…

实用指南:uniapp打包前端项目

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

类和面向对象

概述:语言特性有二,其一为既面向过程又面向对象,其二为用类和对象表示数据和操作数据的,c++将操作和数据汇聚成类和对象何为对象?即世间的一切事物。假如一个对象为feijib,则可以说这个为类feijib,难道类是对象…

PHP转Go系列 | PHP8 这些新函数让你眼前一亮

说实话,PHP8 中的这三个新函数让字符串检查,变得非常直观,就像让代码说人话一样。这对我们程序员来说是一件大好事,提升可读性,减少 Bug 量,升级到 PHP8 之后,再也不用维护类似的屎山代码了。大家好,我是码农先…

代码随想录算法训练营第二天 |209.长度最小的子数组,59. 螺旋矩阵 II

209.长度最小的子数组 思路:快慢指针的思想,当快指针一直移动的时候,那么数列一定是递增的,且我们要求的是连续的数组,所以我们其实可以一次性用一个for就给全部遍历完成。当我们这个区间的值大于了target,我们就…

mac更新or安装homebrew失败

错误信息:fatal: unable to access https://github.com/Homebrew/brew/: LibreSSL SSL_read: error:02FFF03C:system library:func(4095):Operation timed out, errno 60可以用命令:/bin/zsh -c "$(curl -fsSL …

虚拟机5

虚拟机<5>我的虚拟机设置的三个节点,分别为hadoop020,hadoop021,hadoop022,对应教程中的hadoop01,hadoop02,hadoop03

微信小程序实现-单选-以及全选功能。 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Typescript中闭包的原理 - 教程

Typescript中闭包的原理 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

CF2048H Kevin and Strange Operation

操作的自由度很大,打表可以发现限制操作的位置只增不减也是对的。 考虑怎么判断一个串 \(t\) 是否合法。 观察到对于一个位置 \(i\) 满足 \(s_i=0\),想要通过操作使 \(s_i\) 变为 \(1\),只需要 \(>i\) 的位置删掉…

Hadoop本地库加载问题分析与解决方案

主要问题分析 ​​本地库加载警告​​: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 这表明Hadoop无法正确加载本地优化库…

GO基础总结

环境搭建 基本语法 参见:https://www.cnblogs.com/vonlinee/p/19005628 工具链

Visual Studio 离线安装0x80131509

Visual Studio 2026在本月发布了,它最大的特点是集成了GitHub Copilot,内置AI编程,空了要尝尝鲜(使用过Visual Studio Code的Copilot,还是挺有用的)。目前,VS2022很少使用,像VS2012一样被跳过,主要使用VS2019…

dash 从入门到精通

dash 从入门到精通目录 官方地址:https://plotly.com/dash/ Github 开源地址:https://github.com/plotly/dash Dash 官方文档:https://dash.plotly.com/

Oracle备份恢复:backup as copy保留文件名不变化,只更改路径名

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle备份恢…