首先,最基础的想法是暴力 DP 复杂度 O ( n 2 ) O(n^2) O(n2)。设 f [ i ] f[i] f[i] 表示在前 i i i 个馅饼中,获得第 i i i 个馅饼的最大得分。转移方程 f [ i ] = max ( f [ i ] , f [ j ] + v [ i ] ) f[i] = \max(f[i],f[j]+v[i]) f[i]=max(f[i],f[j]+v[i]),其中 0 < j < i 00<j<i 且 a b s ( p [ i ] , p [ j ] ) ≤ 2 × ( t [ i ] − t [ j ] ) abs(p[i],p[j]) \leq 2 \times (t[i]-t[j]) abs(p[i],p[j])≤2×(t[i]−t[j])。这个转移复杂度是 O ( n 2 ) O(n^2) O(n2)。
考虑把绝对值打开,式子就变为
{ p [ i ] − 2 × t [ i ] ≤ p [ j ] − 2 × t [ j ] ( p [ i ] ≤ p [ j ] ) p [ i ] + 2 × t [ i ] ≥ p [ j ] + 2 × t [ j ] ( p [ i ] ≥ p [ j ] )