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,大概感受一下就是,原图信息量太大,而变化量并没有特别大,可是直接维护原图不好维护,同时有较为明显的特殊元素,仅保留特殊元素的信息便可完成判定,所以可以这样想一想。
标签:原图,LOJ3224,路径,up,维护,障碍,mathrm From: https://www.cnblogs.com/663B/p/18142889