p14267

· · 题解

题解里我把原题中的横纵坐标调换了,例如 (y_1,x_3) 表示第 y_1 行第 x_3 列,a 表示原数组.

DP.

考虑把图分成三部分,第一部分最右边为 x_3,第二部分最右边 x_4,第三部分 x_2.

f_{i,j,0/1/2} 表示 (y_1,x_3)/(y_1,x_4)/(y_1,x_2)(i,j) 的最大值.

则有:

n,m 同阶,直接用前缀和维护可以 O(n^3).

可以发现蓝色这一部分是独立的,只和 j 有关,并且是一个最大子段和类似的东西,先单独算.

然后前面这一部分就维护前缀 max 即可,每次加 a_{i,j} 之后和 a_{i,j}/f_{i,j,0}/f_{i,j,1} 取 max.

复杂度 O(nm).

感觉和 NOIP2022 T1 种花差不多.

Submission