码迷,mamicode.com
首页 > 其他好文 > 详细

题解 P7099 [yLOI2020] 灼

时间:2021-06-13 09:34:56      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:sum   display   差分   time   一个人   坐标   个人   play   转化   

自己推的好像有一点点麻烦,而且和现有题解相比都要麻烦……

但是只是一道可以用初中数学知识解决的数学题。

题目很显然可以转化为:有 \(1\)\(n\)\(n\) 个点,一个人在点 \(x\),每次等概率向左或向右走 \(1\) 个点,求走出这 \(n\) 个点(即到 \(0\)\(n+1\) )的期望步数。(此句中的 \(n\) 与题目的 \(n\) 不同)

考虑设 \(f_i\) 表示在第 \(i\) 个点的期望步数,显然地:

\[f_0=f_{n+1}=0 \]

由对称性:

\[f_i=f_{n-i+1} \]

根据期望的定义可知:

\[f_i=\dfrac{1}{2}(f_{i-1}+f_{i+1})+1(1\le i\le n) \]

稍微转化一下:

\[2\times f_i=f_{i-1}+f_{i+1}+2 \]

\[(f_{i+1}-f_{i})-(f_{i}-f_{i-1})=-2 \]

所以说 \(f\) 的二阶差分一个非零常数 \(-2\)

设函数 \(g\)\(f\) 的差分,即 \(g_i=f_{i}-f_{i-1}\)。继续推:

\[g_{i+1}-g_{i}=-2 \]

\[g_{i}=g_1-2\times (i-1) \]

由于 \(f_i=g_i+f_{i-1}\),带入 \(g_i\)

\[f_i=f_1-2\times (i-1)+f_{i-1} \]

\(i=n+1\) 时:

\[f_{n+1}=f_1-2\times n+f_{n} \]

\[0=2\times f_1-2\times n \]

\[f_1=n \]

再推:

\[f_i=\sum_{j=1}^ig_j \]

代入 \(g_j\)

\[f_i=\sum_{j=1}^i(f_1-2\times(j-1)) \]

\[f_i=i\times f_1-i\times(i-1) \]

由于 \(f_1=n\),代入就得到最终答案:

\[f_i=-i^2+(n+1)\times i \]

所以代入,对于飞入坐标 \(x\),上一个虫洞坐标 \(l\),下一个虫洞坐标 \(r\),答案为:

\[ans=-(x-l)^2+(r-l)\times (x-l) \]

\[ans=(r-x)\times (x-l) \]

代码已经很简单了,不必放了吧。

题解 P7099 [yLOI2020] 灼

标签:sum   display   差分   time   一个人   坐标   个人   play   转化   

原文地址:https://www.cnblogs.com/irty/p/14876709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!