[THUSC2016]成绩单

发布时间 2023-04-23 17:29:38作者: PYD1

这个题貌似是一类套路题啊,但是我好像没有见过 (;′⌒`)。

我们首先要观察到一个关键性质:每次操作可以看成原序列上一个区间,且任两个区间要么不交要么包含。

我们考虑最外层之间的拼接是简单的,所以不妨只考虑区间 \([l,r]\) 被同一个最外层区间包含的情况。倘若我们记 \(dp_{l,r,v_1,v_2}\) 为最外层区间值域是 \([v_1,v_2]\) 时的答案的话,我们容易得到一个 \(O(n^6)\) 的算法,这很不好。

考虑优化,一开始我是想考虑目前基于 \([l,r,v_1,v_2]\) 向一侧刷表扩展,这个过程能不能用一个类似单调队列的东西优化,发现我不会

后来发现倘若我们把状态的设计放松一些,这样我们只需要考虑 \([r+1,p]\) 这段新扩展出来的区域到底是自己玩自己的,还是要前面 \([l,r]\) 的最外层区间来兜底。这样就是 \(O(n^5)\) 的了,可以通过。

下附心路历程。

img