【题解】P8850 | 推式子
题意题面陈述很清楚了。但是这个大蒜无炮真的很强(?)
Tag : 推式子 解方程 最优化问题
一般最优化问题要求答案取模有以下两种情况:
1.有通用的,固定的最优方案结论。
2.答案可以用能够储存的实数表示出来(分母分子不含有较大组合数或阶乘)。
对于这道题,因为没有一种显然的最优策略,所以我们猜测后者。
考虑如何计算一个点到另一个点的期望次数
(感觉这个问题莫名的典,但我好像又没做过)
令一个 长 $n$ 的环上一对相隔 $i$ 个点的点的期望操作次数为 $f(i) ,i\in[0,n]$
显然有以下结论
$$f(0) = 0$$
$$f(i) = f(n-i) $$
拆开$$f(i) = \frac{f(i-1)+f(i+1)}{2} +1$$
上式可转化为
$$f(i+1)=2f(i)-f(i-1)-2$$
$$f(i) = 2f(i-1)-f(i-2)-2 \ \ (i>1)$$
发现这是一个环形的方程组,令 $$f(1) = x$$
则
$$f(2) = 2f(1) -f(0) - 2 = 2x - 2$$
$$f(3) = 2f(2) - f(1) - 2= 3x - 6$$
$$f(4) = 2f(3) - f(2) - 2 =4x - 12$$
$$\dots$$
$$f(k) = kx - k^2+k$$
如果你不想知道我是怎么发现这个规律的,请跳过这几行。
其实是这样的:
$$ \begin{bmatrix} f(i) & f(i-1) & 1 \end{bmatrix} =\begin{bmatrix} f(i - 1) & f(i-2) & 1 \end{bmatrix} \times \begin{bmatrix} 2&1&0\\ -1&0&0\\ 2&0&1\\ \end{bmatrix} $$
在脑袋中运行 Brain++ 语言,发现这个矩阵的 $k - 1$ 次方等于
$$ \begin{bmatrix} f(k) & f(k-1) & 1 \end{bmatrix} = \begin{bmatrix} f(1) & f(0) & 1 \end{bmatrix} \times \begin{bmatrix} k&1&0\\ -k+1&-k+2&0\\ k^2-k&k^2-3k+2&1\\ \end{bmatrix} $$
其实有时候用矩阵打表找规律很方便。
代入最开始的等式
$$f(n-1)=(n-1)x-(n-1)(n-2) = f(1)=x$$
$$x = n - 1$$
$$f(i) = i (n-i)$$
于是我们就得到了这个优美的,没有分数的结论。
如何选择使得答案最优?
令 $ans(p)$ 为选 $p$ 做终点行时的答案。
$$ans(p) = \sum_{i=1}^n f(\left|p - i\right|)\times ai $$
拆开绝对值和 $f$ 得到
$$ans(p)=\sum_{i=1}^p i^2\times a_i +(2p-n)\sum_{i=1}^p i\times a_i +(pn -p^2)\sum_{i=1}^pa_i + \sum_{i=p+1}^n i^2\times a_i +(2p+n)\sum_{i=p+1}^n i\times a_i -(pn +p^2)\sum_{i=p+1}^n a_i $$
用 int128 维护 $a_i , a_i\times i,a_i\times i^2$ 的前缀和即可解决。
全部取 min 后再取模。
不是很理解考场上为啥做出来的人这么少。
虽然我并没有打
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970955,谢谢你的阅读或转载!