题解:AT_abc435_f [ABC435F] Cat exercise
前言
本文同步自洛谷专栏,题目传送门。
前置知识:笛卡尔树,模板题。
分析
转化一下形式:
-
可以将当前点的所在区间删去一个前缀或一个后缀。
-
前往当前点所在区间的最大值点(除了当前点),并仅保留该侧区间。
-
最大化移动距离。
则利用第一点,我们可以通过完全删除左或右侧实现定向移动。
下面给出一个最优性结论:
设当前在 \(i\) 处,则应有 \(i\) 为当前区间最大值点,\(j,k\) 在当前区间中且在 \(i\) 的同侧,不妨设 \(i<j,k\),再不妨设 \(P_j<P_k\)。
则从 \(i\) 直接移动到 \(j\) 一定不优于先移动到 \(k\) 再移动到 \(j\)。
结论是容易证明的,\(j-i\le k-i+|j-k|\)。
设 \(i\) 左侧首个大于 \(P_i\) 的位置为 \(L_i\),右侧为 \(R_i\),记 \(fa_i\) 为 \(L_i,R_i\) 中,\(P\) 较小者。
注:要求是首个是因为有移向最大值点的限制与最优性结论。
则至少存在一种最优方案,满足任意一次移动都为:\(fa_i\) 移向 \(i\),证明可以应用最优性结论。
发现形式其实是一棵笛卡尔树,建出然后树上 dp 即可。
时空复杂度均为 \(O(n)\)。
实现
赛时记录。
洛谷账号 https://www.luogu.com.cn/user/1415227

浙公网安备 33010602011771号