admin官方

依次加入 bb 中每个元素,维护最大的 tt 使得 (a1…t,b)(a_{1\dots t},b) 为好的二元组。

当前往 bb 末尾加入一个 xx,那么 tt 的变化方式为:

  • 如果 x≥atx\ge a_t,设 t1t_1 为 tt 后面第一个 >x>x 的位置,则令 t←t1−1t\leftarrow t_1-1。

  • 如果 x<atx<a_t,设 t1t_1 为 tt 前面第一个 ≤x\le x 的位置,则令 t←t1t\leftarrow t_1。

预处理每个点往前第一个比它小的以及往后第一个比他大的位置,连成两棵树。在这个结构上 dp 即可做到 O(n2)O(n^2)。