题意

中文题面,难得解释了 题目传送门


分析

  • 考虑到概率DPDPDP,显然可以想到f(i,j)f(i,j)f(i,j)表示到第iii位末尾有jjj个111的期望值。最后输出f(n+1,0)f(n+1,0)f(n+1,0)即可
  • 但 n&lt;=100000n&lt;=100000n<=100000
  • xxx表示连续的111的个数。所以想想怎么可以得到 x3x^3x3。
  • 有 x3=(x−1)3+3(x−1)2+3(x−1)+1x^3=(x-1)^3+3(x-1)^2+3(x-1)+1x3=(x−1)3+3(x−1)2+3(x−1)+1
  • 用EEE表示期望,记p[i]p[i]p[i]表示第iii位选111的概率,则E(x3)=( E((x−1)3)+E(3(x−1)2)+E(3(x−1))+E(1) )∗p[i]E(x^3)=(\ E((x-1)^3)+E(3(x-1)^2)+E(3(x-1))+E(1)\ )*p[i]E(x3)=( E((x−1)3)+E(3(x−1)2)+E(3(x−1))+E(1) )∗p[i]
  • 那么我们假设f1f1f1表示存在于末尾的xxx的期望值;f2f2f2表示存在于末尾的x2x^2x2的期望值;f3f3f3表示前面的所有x3x^3x3的期望值,也就是答案。
  • 转移方程式就为:

    f3(i)=f3(i−1)+(3f2(i−1)+3f1(i−1)+1)∗p[i]f2(i)=(f2(i−1)+2f2(i−1)+1)∗p[i]f1(i)=(f1(i−1)+1)∗p[i]\begin{aligned}f3(i)&amp;=f3(i-1)+(3f2(i-1)+3f1(i-1)+1)*p[i]\\
    f2(i)&amp;=(f2(i-1)+2f2(i-1)+1)*p[i]\\
    f1(i)&amp;=(f1(i-1)+1)*p[i]\end{aligned}f3(i)f2(i)f1(i)​=f3(i−1)+(3f2(i−1)+3f1(i−1)+1)∗p[i]=(f2(i−1)+2f2(i−1)+1)∗p[i]=(f1(i−1)+1)∗p[i]​
  • 本来第一个方程式看起来有点奇怪,其实那是合并之后的结果。我们记LastLastLast为i−1i-1i−1之前的已经完结的E(x3)E(x^3)E(x3)的总和,这一部分只是为了为最终输出的答案做贡献才放在f3f3f3里。那么剩下的记为NowNowNow,就是未完结、存在于末尾的E(x3)E(x^3)E(x3)。有Last+Now=f3(i−1)Last+Now=f3(i-1)Last+Now=f3(i−1)
    • 假如这个位置选了000,那么不会再往后做贡献,但是要把这一部分加到最终答案里面去。这一部分值为Now∗(1−p[i])Now*(1-p[i])Now∗(1−p[i])
    • 否则将会对后面产生贡献,值为Now∗p[i]Now*p[i]Now∗p[i],其实也就是充当E(x3)=( E((x−1)3)+E(3(x−1)2)+E(3(x−1))+E(1) )∗p[i]E(x^3)=(\ E((x-1)^3)+E(3(x-1)^2)+E(3(x-1))+E(1)\ )*p[i]E(x3)=( E((x−1)3)+E(3(x−1)2)+E(3(x−1))+E(1) )∗p[i]中的E((x−1)3)E((x-1)^3)E((x−1)3)
  • 所以f3(i)=Last+Now∗(1−p[i])+(Now+3f2(i−1)+3f1(i−1)+1)∗p[i]=Last+Now∗((1−p[i)]+p[i])+(3f2(i−1)+3f1(i−1)+1)∗p[i]=Last+Now+(3f2(i−1)+3f1(i−1)+1)∗p[i]=f3(i−1)+(3f2(i−1)+3f1(i−1)+1)∗p[i]\begin{aligned}f3(i)&amp;=Last+Now*(1-p[i])+(Now+3f2(i-1)+3f1(i-1)+1)*p[i]\\&amp;=Last+Now*((1-p[i)]+p[i]) + (3f2(i-1)+3f1(i-1)+1)*p[i]\\&amp;=Last + Now+ (3f2(i-1)+3f1(i-1)+1)*p[i]\\&amp;=f3(i-1)+(3f2(i-1)+3f1(i-1)+1)*p[i]\end{aligned}f3(i)​=Last+Now∗(1−p[i])+(Now+3f2(i−1)+3f1(i−1)+1)∗p[i]=Last+Now∗((1−p[i)]+p[i])+(3f2(i−1)+3f1(i−1)+1)∗p[i]=Last+Now+(3f2(i−1)+3f1(i−1)+1)∗p[i]=f3(i−1)+(3f2(i−1)+3f1(i−1)+1)∗p[i]​
  • 而且DPDPDP时不用开数组
AC Code(300B)
#include <bits/stdc++.h>
using namespace std;
int main () {
int n;
scanf("%d", &n);
double f1 = 0, f2 = 0, f3 = 0, p;
while(n--) {
scanf("%lf", &p);
f3 += (3*f1 + 3*f2 + 1) * p;
f2 = (f2 + 2*f1 + 1) * p;
f1 = (f1 + 1) * p;
}
printf("%.1f\n", f3);
}

BZOJ 4318 OSU! (概率DP)的更多相关文章

  1. BZOJ 4318: OSU! 期望DP

    4318: OSU! 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4318 Description osu 是一款群众喜闻乐见的休闲软件 ...

  2. bzoj 4318 OSU 概率期望dp

    可以发现:f[i]转移到f[i+1]只和最后一串1的长度和平方有关, 因为如果新加的位置是1,贡献就是(x+1)^3-x^3=3x^2+3x+1,否则为0: 所以对于每一个位置,处理出期望的f,x和x ...

  3. bzoj 4318 OSU! —— 期望DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4318 期望DP,因为平方的期望不等于期望的平方,所以用公式递推: 第一次推错了囧,还是看这位 ...

  4. BZOJ - 4318: OSU! (期望DP&Attention)

    Description osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...

  5. BZOJ 4318 OSU! ——期望DP

    这次要求$x^3$的概率和. 直接维护三个值$x$ $x^2$ $x^3$的期望. 概率的平方不等于平方的概率. #include <map> #include <ctime> ...

  6. BZOJ 4318 OSU!(概率DP)

    题意 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串.在 ...

  7. BZOJ 4318: OSU! 期望概率dp && 【BZOJ3450】【Tyvj1952】Easy 概率DP

    这两道题是一样的...... 我就说一下较难的那个 OSU!: 这道15行的水题我竟然做了两节课...... 若是f[i][0]=(1-p)*f[i-1][0]+(1-p)*f[i-1][1],f[i ...

  8. BZOJ 4318: OSU! [DP 概率]

    传送门 题意:变成了告诉每个操作的成功概率,并且得分是三次方 一样....分别维护$x,\ x^2,\ x^3$的期望就行了 注意$x^3$是我们最终求的得分,即使失败得分也要累加上之前的 #incl ...

  9. bzoj 4318 OSU! - 动态规划 - 概率与期望

    Description osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...

随机推荐

  1. 关于Basic Latin踩到的一些坑

    目录 在wiki中,很多语言的字符集都包含了Basic Latin,一开始我没有细看,以为Basic Latin里面都是正常的字符集,后来在线上环境出现了问题 博主某天接到一个需求,需要过滤出某国语言 ...

  2. 调整统计信息JOB采样时间

    一.需求说明 Oracle数据库中存在定时JOB,自动执行收集统计信息的程序.但是对于7*24小时系统来说,Oracle配置的定时收集时间不太合理,需要人为调整.本篇博客就是基于这种需求,调整JOB采 ...

  3. hdu 5230 整数划分 dp

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5230 题意:给定n,c,l,r.求有多少种方法从1~n-1选取任意k数每个数的权重为其下标,使得这些数字之 ...

  4. (一)shiro简介和用户登录demo及角色管理

    一.shiro简介 Apache Shiro是Java的一个安全框架.Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境.Shiro可以帮助我们完成 ...

  5. Visual Studio 最新插件

    Resharper 最新版本下载 https://www.jetbrains.com/resharper/ 破解方法 安装完成后,打开vs  弹出注册窗口选择Activate>License S ...

  6. 转录组测序(RNA-seq)技术

        转录组是某个物种或者特定细胞类型产生的所有转录本的集合.转录组研究能够从整体水 平研究基因功能以及基因结构,揭示特定生物学过程以及疾病发生过程中的分子机理,已广泛应 用于基础研究.临床诊断和药 ...

  7. JDBC 复习5 mysql 的自增长主键 auto_increment

    MySQL 自增长主键 (1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号.编号从1开始,并1为基数递增. (2)把0插入AUTO_INCRE ...

  8. [JZOJ100019]A--dfn序+扫描线

    [JZOJ100019]A--dfn序+扫描线 题目链接 太懒了自行搜索 分析 这道题查了一个下午的错,真的心态崩了 不过这道题确实妙啊 类比于喝喝喝,我们发现任何一条覆盖了非法路径的路径一定不合法, ...

  9. java封装数据类型——Boolean

    众所周知,java对常见的原始数据类型都提供了对应的封装类型,增加一些常用的特性(如 计算hash值.比较相等.类型转换等),以扩展他们对数据处理的能力,使得他们更好地适应面向对象编程的各种场景.今天 ...

  10. Vue路由相关配置

    什么是路由? 1.在以前页面跳转使用的是超链接a标签或者js location.href,而路由是跳转切换组件的跳转方式 2.路由就是监听url的改变并提供相对应的组件用于展示 3.vue-route ...