Description

osu 是一款群众喜闻乐见的休闲软件。 
我们可以把osu的规则简化与改编成以下的样子: 
一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串。在这个串中连续的 X个1可以贡献X^3 的分数,这x个1不能被其他连续的1所包含(也就是极长的一串1,具体见样例解释) 
现在给出n,以及每个操作的成功率,请你输出期望分数,输出四舍五入后保留1位小数。 

Input

第一行有一个正整数n,表示操作个数。接下去n行每行有一个[0,1]之间的实数,表示每个操作的成功率。 

Output

只有一个实数,表示答案。答案四舍五入后保留1位小数。 

Sample Input


0.5 
0.5 
0.5

Sample Output

6.0 

HINT

【样例说明】 
000分数为0,001分数为1,010分数为1,100分数为1,101分数为2,110分数为8,011分数为8,111分数为27,总和为48,期望为48/8=6.0 
N<=100000

思路:此类期望题都是单独算某一位的贡献,假设前一位的连续长度为g[i-1],那么很明显当前位的期望长度为 g[i]=(g[i-1]+1)*p[i];

则当前为的贡献是add=g[i]^3-g[i-1]^3=3*g[i]^2-3*g[i]+1。 这三部分分别算期望即可。

第一部分:3*g[i]^2,就是平方的期望(不仅仅是期望的平方那么简单),令期望的平方为数组g2,则3g2[i]=3*(g2[i-1]+2*g[i-1]+1)*p[i];

第二部分:-3*g[i],其期望=-3*(g[i-1]+1)*p[i]

第三部分:   1,其期望=p[i]

主要就是要注意期望的平方如何去算。

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
double p[maxn],g[maxn],g2[maxn],ans;
int main()
{
int N,i;
scanf("%d",&N);
for(i=;i<=N;i++) scanf("%lf",&p[i]);
for(i=;i<=N;i++){
g[i]=(g[i-]+)*p[i];
g2[i]=(g2[i-]+*g[i-]+)*p[i];
ans+=*g2[i]-*g[i]+p[i];
}
printf("%.1lf\n",ans);
return ;
}

BZOJ - 4318: OSU! (期望DP&Attention)的更多相关文章

  1. BZOJ 4318: OSU! 期望DP

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

  2. bzoj 4318 OSU! —— 期望DP

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

  3. BZOJ 4318 OSU! ——期望DP

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

  4. 【BZOJ】4318: OSU! 期望DP

    [题意]有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L).现在给定n个实数表示该位为1的概率,求期望总价值.n<=10^5. [算法]期望DP [题解]后缀长度是一个很关键的 ...

  5. 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 ...

  6. BZOJ 4318 OSU! (概率DP)

    题意 中文题面,难得解释了 题目传送门 分析 考虑到概率DPDPDP,显然可以想到f(i,j)f(i,j)f(i,j)表示到第iii位末尾有jjj个111的期望值.最后输出f(n+1,0)f(n+1, ...

  7. ●BZOJ 4318 OSU!

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4318题解: 期望dp 如果我们能够得到以每个位置结尾形成的连续1的长度的相关期望,那么问题就 ...

  8. 【BZOJ4318】OSU! 期望DP

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

  9. bzoj 4318 OSU!

    期望dp. 考虑问题的简化版:一个数列有n个数,每位有pi的概率为1,否则为0.求以每一位结尾的全为1的后缀长度的期望. 递推就好了. l1[i]=(l1[i-1]+1)*p[i]+0*(1-p[i] ...

随机推荐

  1. POJ2739解题报告

    2017-09-01 17:04:45 writer:pprp 一开始读错题了,总是想不到,其实不是很难,但是就是心理太着急了,反而浪费了很长时间 /* @param:poj2739 @writer: ...

  2. codeforces 848c - two TVs

    2017-08-22 15:42:44 writer:pprp 参考:http://blog.csdn.net/qq_37497322/article/details/77463376#comment ...

  3. 读书笔记: Microsot .NET企业级应用架构设计

    Microsot .NET企业级应用架构设计 Dino Esposito   Andrea Saltarello 编    陈黎夫 译   人民邮电出版社 第一部分 设计原则 第1章 当代架构师和架构 ...

  4. Javascript知识点汇总-初级篇

    JavaScript的数据类型都有什么? 基本数据类型:String,Boolean,Number,Undefined, Null 引用数据类型:Object(Array,Date,RegExp,Fu ...

  5. 远程线程注入shellcode笔记

    #include "stdafx.h" #include <windows.h> #include <stdio.h> char shellcode[] = ...

  6. Maximal Rectangle, 求矩阵中最大矩形,参考上一题

    问题描述: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...

  7. TestNG,timeOut

    这篇先来介绍@Test注释下的一个属性-timeOut.字面意思就是超时判断,详细点说.如果哪个测试方法需要监听执行的时间,那么就可以考虑采用timeOut属性.例如,实际的接口测试中,加入登录接口时 ...

  8. setInterva()调用

    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...

  9. spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableViewController

    spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableView ...

  10. mysql 在创建表或者插入时遇到关键字报错

    mysql 在创建表或者插入时遇到关键字:比如name,status等.都不报错 解决方法:在字段上加上` 上面这个符号是键盘ecs下面那个符号