题解

cookiebus 2023-10-01 22:14:03 14 返回题目

我们定义谷是小的段,峰是大的段。

首先,白送了分,很显然谷的长度是,直接无脑对于每组询问即可。

然后,用简单的科技可以让这个变快,就能得到额外的分,这个太简单了,不写了。

接下来,我们考虑找找性质:

假设对于作为谷,其向右第一个合法的谷的位置是,那么右边的任意一个位置,都可以当做是合法的谷。

原因是,假设右边有一个位置,不能当谷,也就是,以及一些区间和相关的限制,那么从向右的最优决策肯定不是,我们可以放大题意,让可以走到去。

那么,我们定义向右第一个合法的位置是

连长度为的边(相当于是作为波谷)。

连长度为的边,从连长度为的边。

如果向右没有合法的,且可以当峰,那么从连长度为的边。

询问的内容相当于是问从起点到终点的最长路。

接下来就需要稍微想想了,一个点,向右找第一个,满足的是什么?满足的是,换句话说,如果不满足条件,那么,说明,那么结论就出来了,一个点向右第一个满足条件的,最多是的距离。

那么这下问题就简单多了,比如用ddp就可以加速这个问题,我们用矩阵来维护这个转移,然后直接ddp

但实际上这样复杂度就多了,我们可以直接用线段树来维护一个矩阵,表示从区间左边第点出发,跳到区间最右边最多能跳几次,以及跳到哪了(这里跳指的是从),样合并两个区间复杂度是的。

{{ vote && vote.total.up }}