[JZOJ3248] Type

来源:互联网 发布:淘宝网电脑主板 编辑:程序博客网 时间:2024/06/04 20:09

Description

你要输入一段长为N的字符串,输错第i个字符的概率为Pi,可以在某个位置停下来去检查,找到第一个出错的位置,从现在的位置删到出错的第一个位置,输入、删除一个字符时间为1,检查的时间为t,问最小的期望完成时间。

N3000

Analysis

观察打字时的过程,比如当前从i开始打,然后检查,倒回来删到第一个错的地方j,然后从j再开始打。这样想的话,如果我们知道了从j开始打的最小期望步数,记为fj,我们可以方便地进行DP。

那这样我们的fi设的是从i开始输入,输入到结尾的最小期望步数,那么f1就是答案。那么枚举一个位置j作为检查点,则有fi=min(fj+t+ji+1+calc(i,j))
显然calc(i,j)=pi(fi+ji+1)+(1pi)pi+1(fi+1+ji)++(1pi)(1pj)fj+1

这样的时间复杂度是O(N3)的,然而枚举k可以省掉,很轻松地达到O(N2)

0 0
原创粉丝点击