题意

  一个长度为 $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. python导入csv文件出现SyntaxError问题分析

    python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...

  2. python识别图片中的信息

    好好学习的第一步 一心一意的干好一件事儿,问自己 我做什么 我怎么做 做的结果是啥 例子1 问题 回答 我做什么: 识别图片上的信息 我怎么做: 百度+谷歌 结果是啥: 完成识别 1 安装PIL pi ...

  3. Django>ORM字段和参数

    Django之ORM字段和参数   字段 常用字段 AutoField 自增int自增列,必须填入参数 primary_key=True. 当model中如果没有自增列,则自动会创建一个列名为id的列 ...

  4. DevOps - Scrum

    1 - DevOps与敏捷开发 在采用敏捷开发的情况下,所有成员都对服务和产品负责,理解彼此的业务,符合DevOps的组织和文化. 以商业需求为核心,在较短期间内确定开发方针,并持续进行改善,从而逐步 ...

  5. Vuex的认识和简单应用(一)

    一.vuex是一个专为vue.js应用程序开发的状态管理模式. 应用场景:1.多个视图依赖于同一个状态2.来自不同视图的行为需要变更同一个状态此时,我们可以把组件的共享状态抽取出来,以一个全局单例模式 ...

  6. Nmap扫描二级目录

    nmap --script http-enum -p80 192.168.2.100   //namp扫描2级目录

  7. 【ABAP系列】SAP 使用事务码DBCO实现SAP链接外部数据库以及读取例程

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 使用事务码DBCO实现S ...

  8. Git-T

    或在命令行上创建一个新的存储库echo“#gittest”>> README.md git init git add README.md git commit -m“first commi ...

  9. Android开发 互相调用模式之提供扩展类

    此种方法适用于:比如你要让Android做一些事情,这些事用不到任何资源,在Android下用纯代码就能实现它,这样就可以在Android下写好,将它封装成一个方法,打成包按照下面的方式丢给Unity ...

  10. LeetCode.1078-两词出现后的单词(Occurrences After Bigram)

    这是小川的第392次更新,第422篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第254题(顺位题号是1078).给出单词first和单词second,以"fi ...