题目大意
有一个序列
{An}
,初始站在位置
0
上,求一条路径满足以下条件,并且经过的点权值和最大。(记
- |Xk−Xk+1|<=m,1<=k<p
- X1=0<X2<...<Xk>Xk+1>Xk+2>...>Xp=0
- 对于任意 k<i<p ,要求 (Xk+1)∈{X1..k}
n<=105,m<=n
分析
显然是
DP
,然而要想写对不是很简单。
记
fi
为
i
号位是当前回程上的最后一个点,由于题目要求回程选的点的后继一定要选中,而两个回程点之间可以任意选正权值的点,不难列出方程,记
用单调队列维护就好了。
各种各样奇怪的细节
- 要在开头加入两个零权辅助点方便处理。
- 需要特殊处理 m=1 的情况
- 对于 f1 的值需要特判