题意

  一个长度为 $n$ 的字符串,第 $i$ 位有 $p_i$ 的概率是 $1$,否则是 $0$。一个字符串的分数定义为:对于字符串中每一个极长的连续一段 $1$,设这段 $1$ 的长度为 $x$,则分数累加 $x^3$。

  求字符串的期望分数。

题解

  考虑分数累加 $x$ 而不是 $x^3$ 时怎么做。

  设 $f_{i,j}$ 表示分数累加 $x$ 的 $j$ 次方时,第 $1$ 到 $i$ 位的期望分数。

  则 $f_{i,1}$ 的转移显然为 $f_{i,1} = (1-p_i)\times f_{i-1,1} + p_i\times (f_{i-1,1}+1)$。

  就是分两种情况:放 $0$,结束前面连续的一段 $1$(前面连续的一段 $1$ 的长度可能是 $0$);放 $1$,延长前面连续的一段 $1$(前面可能是 $0$,那就是新起一段 $1$)。

  我们在转移 $f_{i,3}$ 时再考虑断的情况,所以把放 $1$ 的转移提出来。设 $g_{i,j}=p_i\times (g_{i-1,j}+1)$,显然这是分数累加 $x$ 的 $j$ 次方的情况,而 $x$ 是当前连续段的长度,所以这也是当前连续的一段 $1$ 的期望长度的 $j$ 次方

  之后我们只会用到放 $1$ 的情况,即 $g_{i,1}$。

 

  然后考虑 $f_{i,2}$,我们发现 $f_{i,2} = f_{i-1,2}\times (1-p_i) + (f_{i-1,2}+?)\times p_i$

  $?$ 就是成功连接所增加的分数,这里显然不是 $1$,我们考虑怎么表示它。

  设当前连续的一段 $1$ 的长度为 $len$,不难发现 $(len+1)^2 = len^2+2len+1$,即连续一段 $1$ 的长度从 $len$ 变为 $len+1$ 时,分数会加 $2len+1$。

  所以 $f_{i,2} = f_{i-1,2}\times (1-p_i) + (f_{i-1,2}+2len+1)\times p_i$。

  而 $len$ 的期望值为 $g_{i,1}$,所以 $f_{i,2} = f_{i-1,2}\times (1-p_i) + (f_{i-1,2}+2g_{i,1}+1)\times p_i$。

  与一次方同理,之后我们只会用到放 $1$ 的情况,即 $g_{i,2}$。

  最后考虑 $f_{i,3}$,类似 $f_{i,2}$,$f_{i,3} = f_{i-1,3}\times (1-p_i) + (f_{i-1,3}+?)\times p_i$。

  显然 $(len+1)^3 = len^3  + 3len^2 + 3len + 1$,即延长一位 $1$ 会增加 $3len^2 + 3len + 1$ 的分数。

  而 $len$ 的期望值为 $g_{i,1}$,$len^2$ 的期望值为 $g_{i,2}$。

  所以 $f_{i,3} = f_{i-1,3}\times (1-p_i) + (f_{i-1,3}+3g_{i,2}+3g_{i,1}+1)\times p_i = f_{i-1,3} + (3g_{i,2}+3g_{i,1}+1)\times p_i$。

  $O(n)$ 递推即可。

  哇好神仙啊,没有脑子的我对着式子瞪了一小时才突然明白那群人的式子是怎么得的

【bzoj 4318】OSU!的更多相关文章

  1. 【BZOJ 1150】 1150: [CTSC2007]数据备份Backup (贪心+优先队列+双向链表)

    1150: [CTSC2007]数据备份Backup Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设 ...

  2. Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路

    首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...

  3. 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护

    线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...

  4. LCA 【bzoj 4281】 [ONTAK2015]Związek Harcerstwa Bajtockiego

    [bzoj 4281] [ONTAK2015]Związek Harcerstwa Bajtockiego Description 给定一棵有n个点的无根树,相邻的点之间的距离为1,一开始你位于m点. ...

  5. 【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)

    dsy1911: [Apio2010]特别行动队 [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个 ...

  6. 【BZOJ 1096】 [ZJOI2007]仓库建设 (斜率优化)

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3940  Solved: 1736 Description ...

  7. 【BZOJ 2132】圈地计划 && 【7.22Test】计划

    两种版本的题面 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土 ...

  8. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  9. 【BZOJ 1032】 [JSOI2007]祖码Zuma

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1032 [题意] [题解] /* 设f[i][j]表示从第i个珠子开始的j个珠子被消除; ...

随机推荐

  1. sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    httpclient-4.5.jar 定时发送http包,忽然有一天报错,http证书变更引起的. 之前的代码 try { CloseableHttpClient httpClient = build ...

  2. 【Linux】【三】linux 复制文件到指定目录

    将  application/file/test/logs/ 下的文件 logs.log , logs.tar 复制到  application/file/test/tools/ 下,并新建文件夹[l ...

  3. CentOS7 中arp欺骗,如何让你玩游戏的室友早点睡觉?

    环境:CentOS7 Linux安装arpspoof进行arp攻击实验 arpspoof是dsniff的一个组件,主要用于进行arp欺骗使用,所以说我们需要安装dsniff,虽然有很多看起来很容易,但 ...

  4. 【Linux开发】linux设备驱动归纳总结(八):1.总线、设备和驱动

    linux设备驱动归纳总结(八):1.总线.设备和驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  5. C++中map和unordered_map的用法

    1. 简介 map和unordered_map都是c++中可以充当字典(key-value)来用的数据类型,但是其基本实现是不一样的. 2. map 对于map的底层原理,是通过红黑树(一种非严格意义 ...

  6. (5.4)mysql高可用系列——MySQL异步复制(实践)

    关键词:mysql复制,mysql异步复制,mysql传统异步复制 [1]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数 ...

  7. SqlServer中#和##的区别

    本地临时表的名称以单个数字字符(#)开头,它们仅对当前的用户连接是可见的. 全局临时表的名称以两个数字字符(##)开头,创建后对任何用户都是可见的.

  8. springboot拦截中自动注入的组件为null问题解决方法

    一.写SpringUtil类来获取Springh管理的类实例,判断是否注入成功,如果没有注入成功重新获取注入 package com.util; import org.springframework. ...

  9. luogu P4482 [BJWC2018]Border 的四种求法

    luogu 对于每个询问从大到小枚举长度,哈希判断是否合法,AC 假的(指数据) 考虑发掘border的限制条件,如果一个border的前缀部分的末尾位置位置\(x(l\le x < r)\)满 ...

  10. Vue的nextTick是什么?

    公司做之前项目的时候,遇到了一些比较困惑的问题,后来研究明白了nextTick的用法. 我们先看两种情况: 第一种: export default { data () { return { msg: ...