传送门
神题 O r z Orz Orz
首先 50 p t s 50pts 50pts大家应该都会。。。
直接设 f l , r , x f_{l,r,x} fl,r,x表示区间 [ l , r ] [l,r] [l,r]中最大值为 x x x的方案数,然后枚举最大值出现位置转移即可。
复杂度?
由于对于每个区间 [ l , r ] [l,r] [l,r]只有 2 / 3 2/3 2/3个点可以用于转移,所以前两维总状态数大概是 O ( n ) O(n) O(n)级别的。
而对于最后一维,貌似不好优化。
考虑到最后取值的区间只有 O ( n ) O(n) O(n)段,我们不妨重新设一个状态:
f l , r , t , x ′ f'_{l,r,t,x} fl,r,t,x′表示对于区间 [ l , r ] [l,r] [l,r]最大值在第 t t t段内且等于 x x x。
然后经过数学归纳会发现在同一区间同一段取值区间内的数对应一个相同的函数。
即 f l , r , t , x ′ f'_{l,r,t,x} fl,r,t,x′是关于 x x x的多项式 f l , r , t ′ ( x ) f'_{l,r,t}(x) fl,r,t′(x)。
那么 f l , r , x f_{l,r,x} fl,r,x就是关于 x x x的分段多项式 f l , r ( x ) f_{l,r}(x) fl,r(x)
考虑如何从 f l , m i d f_{l,mid} fl,mid和 f m i d + 1 , r f_{mid+1,r} fmid+1,r