所以……其实是 NOI 赛场上不可多得的送分题?
我还调了这么久……
首先设 fi 表示坐了第 i 班列车后的最小烦躁值(这里先不考虑 qsk)。
有转移 fi=minqj≤pi,yj=xi(fj+A(pi−qj)2+B(pi−qj)+C)
这怎么这么像「『APIO2010』特别行动队」啊?
先不管 yj=xi 的限制,考虑斜率优化。
设决策 qk≤qj≤pi 满足 j 优于 k 即 fj+A(pi−qj)2+B(pi−qj)+C<fk+A(pi−qk)2+B(pi−qk)+Cfj−2Apiqj+Aq2j−Bqj<fk−2Apiqk+Aq2k−Bqk(fj+Aq2j)−(fk+Aq2k)<2Api(qj−qk)(fj+Aq2j)−(fk+Aq2k)qj−qk<2Api
注意判掉 qj=qk 的情况,这时斜率就当做 −∞ 来处理。
(然鹅不判也能过……)
于是我们发现,如果我们按照时间轴来 DP 的话,就是一个标准的斜率优化。 即,在时间点 i 将 qj=i 的 j 加入候选决策集合,并对 pj=i 的 fj 进行转移。
然鹅还有一个问题:yj=xi。
这个可以对每一个站点都开一个队列解决。
代码:
1 |
|