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!题解的主要内容,如果未能解决你的问题,请参考以下文章

题解 P1654 OSU!

JZOJ3966 Sabotage 题解

JZOJ1227 Coprime 题解

[JZOJ A组]球 题解

题解JZOJ 提高A组 19.8.10 挖宝藏

bzoj4318 OSU!