本人是这样推的:
f[i] = min(f[j] + sum1[i] * (sum2[i] - sum2[j - 1]) + s * (sum2[n] - sum2[j - 1]));
f[i] = min(f[j] + sum1[i] * sum2[i] - sum1[i] * sum2[j - 1] + s * (sum2[n] - sum2[j - 1]))
f[i] - sum1[i] * sum2[i] = - sum2[j - 1] * (sum1[i] + s) + s * sum2[n] + f[j];
然后将 (sum1[i]+s) 当作斜率,维护下凸壳。
sum1 是 t 的前缀和,sum2 是 f 的前缀和。
求大佬指出错误QAQ