[ROI 2017] 前往大都会 (Day 1)

[ROI 2017] 前往大都会 (Day 1) - 洛谷 P10652

对于第一问,直接把图建出来,跑 dij 即可。

主要难点是第二问,我们设 \(f_i\) 表示到达节点 \(i\) 的最大距离平方和。

考虑如何转移,把最短路图建出来(即所有满足 \(d_v = d_u + t_e\) 的边 \(e\) 形成的),那么 \(f\) 只能再这张图上转移。对于每条铁路,会被切割成若干段,每段内部都是可以转移的(如下图,黑色边表示铁路,实线为在最短路图中的边;红线表示转移)。

image

转移的形式就是 \(f_u = \max \{ f_v + (d_u - d_v)^2 \}\),很裸的斜率优化,对于每一个小段维护一个单调栈,按照 \(d\) 从小到大的顺序转移,求出 \(f\) 再加入各个单调栈。

时间复杂度:\(O(sum \log sum)\)

注意这个题是单调栈,不是单调队列,因为 \(k = -2d_u, x = d_v\)\(x\) 递增,\(k\) 递减,决策点是往右移的。

posted @ 2025-12-11 20:02  xiehanrui0817  阅读(3)  评论(0)    收藏  举报