【bzoj 4318】OSU!
题意
一个长度为 $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!的更多相关文章
- 【BZOJ 1150】 1150: [CTSC2007]数据备份Backup (贪心+优先队列+双向链表)
1150: [CTSC2007]数据备份Backup Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设 ...
- Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...
- 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...
- LCA 【bzoj 4281】 [ONTAK2015]Związek Harcerstwa Bajtockiego
[bzoj 4281] [ONTAK2015]Związek Harcerstwa Bajtockiego Description 给定一棵有n个点的无根树,相邻的点之间的距离为1,一开始你位于m点. ...
- 【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)
dsy1911: [Apio2010]特别行动队 [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个 ...
- 【BZOJ 1096】 [ZJOI2007]仓库建设 (斜率优化)
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3940 Solved: 1736 Description ...
- 【BZOJ 2132】圈地计划 && 【7.22Test】计划
两种版本的题面 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土 ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【BZOJ 1032】 [JSOI2007]祖码Zuma
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1032 [题意] [题解] /* 设f[i][j]表示从第i个珠子开始的j个珠子被消除; ...
随机推荐
- JS进阶学习<一>
一:区分大小写: 1. JS是区分大小写的,如:classname和ClassName是不一样的.同时注意方法.属性.变量等的大小写吆. 2. JS中的字符.符号等一定要在英文状态下输入吆. 二:变量 ...
- Python爬虫学习==>第一章:Python3+Pip环境配置
前置操作 软件名:anaconda 版本:Anaconda3-5.0.1-Windows-x86_64清华镜像 下载链接:https://mirrors.tuna.tsinghua.edu.cn/ ...
- Linux文件权限码
权限 二进制值 八进制值 描述 --- 000 0 没有任何权限 --x 001 1 只有执行权限 -w- 010 2 只有写入权限 -wx 011 3 有写入和执行权限 r-- 100 4 只有读取 ...
- 《Linux命令行大全》 笔记记录
1.Shell是什么 2.(文件目录)导航 3.Linux系统 4.操作文件和目录 5.命令的使用 6.重定向 7.透过shell看世界 扩展 引用 8.高级键盘技巧 9.权限 10.进程 11.环境 ...
- ubantu
1.win10 到Microsoft store 下载ubantu,并安装 2.开启SSH服务,需要开启openssh-server 删除ssh:sudo apt-get remove --purge ...
- Vue 项目结构介绍
Vue 项目创建完成后,使用 Web Storm 打开项目,项目目录如下: build 文件夹,用来存放项目构建脚本 config 中存放项目的一些基本配置信息,最常用的就是端口转发 node_mod ...
- HDU 1203 I NEED A OFFER! (动态规划、01背包、概率)
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- K8s开始
部署前思考:
- java 兔子生仔问题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8 ...
- Java中的异常处理try catch(第八周课堂示例总结)
异常处理 使用Java异常处理机制: 把可能会发生错误的代码放进try语句块中. 当程序检测到出现了一个错误时会抛出一个异常对象. 异常处理代码会捕获并处理这个错误. catch语句块中的代码用于处理 ...