[JZOJ3248] Type

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值