题意简述
给出一个长为 $n$ 的环,每个点有 $a_i, b_i$。随机一个点 $i$ 开始,每次你可以选择停止,则获得当前位置的价值 $a_i$;或者耗费 $b_i$ 的价值,等概率随机移动到左右两点中的一个。
求期望获得的最大价值。$2\le n\le 200000, 0\le a_i\le 10^{12}, 0\le b_i\le 100$。
主要思路
由于花费非负,若移动到了价值最大的点上显然不会再移动。故可以断环为以最大价值的点开头和结尾的长 $n+1$ 的序列。
显然,若设 $g_i$ 为从点 $i$ 开始的期望最大价值,则 $g_i = \max(a_i, \dfrac{g_{i - 1} + g_{i + 1}}{2} - b_i)$。
但是这式子里有个 $b_i$ 不好搞,给每个点设一个修正值 $c_i$,然后两边同时减去这个值。
$$
g_i - c_i = \max(a_i - c_i, \dfrac{g_{i - 1} - c_{i - 1} + g_{i + 1} - c_{i + 1}}{2} - b_i - c_i + \dfrac{c_{i - 1} + c_{i + 1}}{2})
$$
为了消去 $b_i$,应有 $b_i + c_i = \dfrac{c_{i - 1} + c_{i + 1}}{2}$。
钦定 $c_1 = 0$,即可求出所有 $c_i$。
设 $f_i = g_i - c_i, v_i = a_i - c_i$,此时的转移式即为 $f_i = \max(v_i, \dfrac{f_{i-1}+f_{i+1}}{2})$。
这是个经典问题。类似于价值最大的点,应当有一些「终止点」,移动到则直接停止最优。
假设相邻的两个终止点 $l, r$,考虑求 $\sum\limits_{i=l}^{r} f_i$。
显然 $f_l = v_l, f_r = v_r$。
而对于 $i\in(l, r)$,应有 $f_i = \dfrac{f_{i-1}+f_{i+1}}{2}$,即 $f_i, i\in[l, r]$ 为等差数列。
于是贡献就是相邻终止点向 $x$ 轴作垂线形成梯形的面积。不妨求出答案的两倍。
即贡献为 $(v_l + v_r) \times (r - l)$。
显然当选取终止点形成上凸壳时,总贡献取最大值。
于是直接 $O(n)$ 做就完事了。
参考代码
1 |
|