LOJ3224

nb 题。感觉相当 Educational。

自己做的时候大概试了试 [HAOI2017] 方案数 的维护方式;模拟 BFS 维护每一行能到达的状态等。但没一个可行的。

一个 DS 维护的 trick:保留关键元素。

本题中最特殊的肯定是最靠上,最靠下的两条路径。尝试只维护这两条路径,分别设为 \(P_1, P_2\)

一个障碍点 \((x,y)\) 如果在 \(P_1,P_2\) 上则必然无解。否则如果不在 \(P_1, P_2\) 上就先存起来备用,此刻它没有影响。

接下来考虑点在 \(P_1/P_2\) 上的情况。只讨论 \(P_1\)

一种刻画路径的方法是维护每列对应线段的最上方 \(\mathrm{up}[y]\)\((x,y)\) 在路径上说明 \(x\in [\mathrm{up}[y-1], \mathrm{up}[y]]\),此时对 \(y-1\sim m\)\(\rm up\)\(x+1\) Check Max 即可。

然而新的路径上仍然有可能有原先的障碍点,发现路径的变化其实不大,并且一个障碍点发挥作用后就会保留在路径上方不再贡献,递归找出障碍点暴力更新即可。

时间复杂度 \(\mathcal O((n+q)\log n)\)

这个 trick 没有见过哦,似乎之前在 APIO 2023 游记里看到过 T2 也是类似的思想。到时候看一看题。

编不出来 motivation,大概感受一下就是,原图信息量太大,而变化量并没有特别大,可是直接维护原图不好维护,同时有较为明显的特殊元素,仅保留特殊元素的信息便可完成判定,所以可以这样想一想。

posted @ 2024-04-18 09:54  ImALAS  阅读(3)  评论(0编辑  收藏  举报