牛客 545A 小A与最大子段和 & CF 660F Bear and Bowling 4

大意: 给定序列$a$, 求选择一个子区间$[l,r]$, 使得$\sum\limits_{i=l}^r(i-l+1)a_i$最大.

$n\le2e5, |a_i|\le 1e7$.

记$s[i]=\sum a[i], m[i]=\sum ia[i]$, $dp[i]$为以$i$为右端点的答案, 

$\begin{align} \notag dp[i] & =\max\limits_{0\le j<i}\{m[i]-m[j]-j(s[i]-s[j])\} \\ & =  m[i]-\min\limits_{0\le j<i}\{m[j]-js[j]+js[i]\} \notag\end{align}$ 

然后斜率优化.

猜你喜欢

转载自www.cnblogs.com/uid001/p/10877301.html