专栏文章

题解:P11405 [RMI 2020] 秘鲁 / Peru

P11405题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minc4cbf
此快照首次捕获于
2025/12/01 23:59
3 个月前
此快照最后确认于
2025/12/01 23:59
3 个月前
查看原文
fif_i 表示前 ii 个的答案,submax(i,j)=maxx=ijsx\mathrm{submax}(i,j) = \max \limits_{x=i}^j s_x。则 fi=minjik+1{fj1+submax(j,i)}f_i = \min \limits_{j \geq i - k + 1} \{ f_{j-1} + \mathrm{submax}(j,i)\}
直接利用线段树和单调栈不难做到 O(nlogn)O(n \log n),估计是过不了的。
考虑决策点 jj,必定有 j=ik+1j=i-k+1sj1s_{j-1}[j1,i][j-1,i] 的严格后缀最大值,否则令决策点为 j1j-1 显然不劣。
维护后缀最大值的位置然后维护一个能支持插入删除查询最小值的 multiset 也可以做到 O(nlogn)O(n \log n),利用懒惰删除优先队列就可以得到一个常数非常小的做法,据说可以通过。
进一步,分析 ii+1i \gets i+1 的本质,是把后缀最大值这个序列末尾删除一些数,然后末尾加入,以及将 j<ik+1j<i-k+1jj 弹出。即你需要维护一个序列,支持末尾加入删除,开头删除,查询全局最小值,利用双栈模拟队列的结构即可做到线性。

评论

0 条评论,欢迎与作者交流。

正在加载评论...