码迷,mamicode.com
首页 > 编程语言 > 详细

python 从字符串中解析xml

时间:2020-08-08 11:49:16      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:rom   parameter   ini   Nid   str   mtr   eid   com   element   


期望看起来无从下手,先尝试寻找某个局面的最优解法,就是最少花多少步可以全变 0

首先观察到一个性质,每个开关至多操作 \(1\),因为操作 \(2k\) 次等于没操作,操作 \(2k+1\) 次等于操作 \(1\) 次,这样就把答案限制在了 \(\leq n\)
这是所有这种一个开关控制多个灯改变亮暗情况的点灯类型的题的共有性质。

但是这样还是不能做,于是观察开关 \(i\),改变的是 \(i\) 的所有约数,有的灯可以被多个开关影响到,但是 \(n\) 号灯一定只有 \(n\) 号开关能影响,因为 \(n\) 已经是最大的数了,不可能有它的倍数。

于是 \(n\) 号开关是操作还是不操作,直接就定下来了。

这样以后 \(n-1\) 号开关是否操作,也能确定,以此类推,每个开关操作与否直接被确定。
大多数点灯题都是能找到这样一个只被一个开关控制的灯的切入点的。

然后我们发现,到这一步之后,问题被转化了,有 \(n\) 个数,其中 \(m\) 个是 \(0\),剩下的是 \(1\),每次等概率随机选取一个数,将它变为另一个状态,求使得所有数中 \(1\) 的个数小于等于 \(k\) 的期望步数。而且这只和 \(1\)数量有关了,和哪几个开关是 \(1\) 无关。

期望一般考虑倒推,设 \(dp_i\) 为当前有 \(i\)\(1\) 时,期望还需要多少步才能变成全 \(0\)

\(i\leq k\)\(dp_i=i\)
否则 \(dp_i=\frac{i}{n}dp_{i-1}+\frac{n-i}{n}dp_{i+1}+1\)

直接高斯消元不可行,但是这个式子看起来可以递推。

\[i\times dp_i+(n-i)\times dp_i=i\times dp_{i-1}+(n-i)\times dp_{i+1}+n \]

\[i\times (dp_{i}-dp_{i-1})= (n-i)\times (dp_{i+1}-dp_{i})+n \]

\[dp_{i}-dp_{i-1}=\frac{n-i}{i}\times (dp_{i+1}-dp_{i})+\frac{n}{i} \]

还需要一个边界条件:\(dp_{n}-dp_{n-1}=1\)
就可以递推了。

最后 \(dp_m\) 就是答案。

代码不贴了。

python 从字符串中解析xml

标签:rom   parameter   ini   Nid   str   mtr   eid   com   element   

原文地址:https://www.cnblogs.com/qihuanye-229110/p/13456635.html

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