JZOJ 3468 OSU!题解
Posted kuangbiaopilihu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JZOJ 3468 OSU!题解相关的知识,希望对你有一定的参考价值。
题目大意
一共有 (n) 次操作,每次操作只有成功与失败之分,成功对应 (1),失败对应 (0),(n) 次操作对应为 (1) 个长度为 (n) 的 (01)串。在这个串中连续的 (X) 个 (1) 可以贡献 (X^3) 的分数,这 (X)个 (1) 不能被其他连续的 (1) 所包含(也就是极长的一串 (1),具体见样例解释)
现在给出 (n),以及每个操作的成功率,请你输出期望分数,输出四舍五入后保留 (1) 位小数。
输入格式
第一行有一个正整数 (n),表示操作个数。
接下去 (n) 行每行有一个 ([0,1]) 之间的实数,表示每个操作的成功率。
输出格式
只有一个实数,表示答案。答案四舍五入后保留 (1) 位小数。
样例输入
3
0.5
0.5
0.5
样例输出
6.0
数据范围与提示
(000) 分数为 (0),(001) 分数为 (1),(010) 分数为 (1),(100) 分数为 (1),(101) 分数为 (2),(110) 分数为 (8),(011) 分数为 (8),(111) 分数为 (27),总和为 (48),期望为 (48/8=6.0)
(Nle100000)
分析
- 我们先考虑一个简单的问题,如果连续 (X) 个 (1) 贡献的分数为 (X) 要怎么处理?其实很简单,我们考虑每多一个 (1) 最结果的贡献,这里因为连续长度从 (x) 增加到 (x+1),得分也是加 (1),而第 (i) 位为 (1) 的概率为 (p_i),那么真正的贡献为 (p_i),其实就是每个位置选取 (1) 的概率之和。
- 那么对与本题贡献值为 (x^3) 来说,也可以用同样的方法来考虑,设长度为 (i) 的 (01) 串的期望得分为 (f3[i]),那么 (f3[i+1]) 怎么求?
我们同样可以考虑增加一位对结果的贡献:- 如果该位为 (0),肯定贡献为 (0);
- 如果该位为 (1),那么这个 (1) 就要接在到第 (i) 位结尾连续的 (x) 个 (1) 的后面,变成长度为 (x+1) 的连续的 (1) 串,那么此时第 (i+1) 位上对结果的贡献为 (Delta=(x+1)^3-x^3=3x^2+3x+1)
最终的分数就是把每个 (1) 的贡献累加起来。因为第 (i) 位为 (1) 是有概率的,为 (p_i),所以它真正对分数之和的贡献为 (Delta imes p_i)。因此我们可以得到一个递推式 (f3[i+1]=f3[i]+Delta imes p_i)。因为 (Delta) 里面的 (x) 指的是期望的长度,所以我们还需要定义
由于我们求的是获得分数的期望,由期望的公式 (E((Y+1)^3)=E(Y^3+3Y^2+3Y+1)=E(Y^3)+3E(Y^2)+3E(Y)+1)。我们知道,(E(Y^2)) 一般是不等于 (E^2(Y)),
以上是关于JZOJ 3468 OSU!题解的主要内容,如果未能解决你的问题,请参考以下文章