【题解】P4069 [SDOI2016]游戏

题目描述

Alice 和 Bob 在玩一个游戏。

游戏在一棵有 \(n\) 个点的树上进行。最初,每个点上都只有一个数字,那个数字是 \(123456789123456789\)

有时,Alice 会选择一条从 \(s\)\(t\) 的路径,在这条路径上的每一个点上都添加一个数字。对于路径上的一个点 \(r\),若 \(r\)\(s\) 的距离是 \(dis\),那么 Alice 在点 \(r\) 上添加的数字是 \(a\times dis+b\)

有时,Bob 会选择一条从 \(s\)\(t\) 的路径。他需要先从这条路径上选择一个点,再从那个点上选择一个数字。

Bob 选择的数字越小越好,但大量的数字让 Bob 眼花缭乱。Bob 需要你帮他找出他能够选择的最小的数字。

题解

将加值拆解为一上一下两条路径,发现每条路径上是加上一条和深度有关的一次函数。
于是可以树链剖分,李超线段树维护一下最值。
考虑李超线段树维护一次函数最值。
注意:李超线段树不是凸包。

代码咕咕咕

posted @ 2023-04-21 14:11  flywatre  阅读(39)  评论(0)    收藏  举报