P1654 OSU!

题目描述

osu 是一款群众喜闻乐见的休闲软件。

我们可以把osu的规则简化与改编成以下的样子:

一共有\(n\)次操作,每次操作只有成功与失败之分,成功对应\(1\),失败对应\(0\),\(n\)次操作对应为\(1\)个长度为\(n\)的\(01\)串。在这个串中连续的 \(X\) 个 \(1\) 可以贡献 \(X^3\) 的分数,这\(x\)个\(1\)不能被其他连续的\(1\)所包含(也就是极长的一串\(1\),具体见样例解释)

现在给出\(n\),以及每个操作的成功率,请你输出期望分数,输出四舍五入后保留1位小数。

输入输出格式

输入格式:

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

输出格式:

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


其实有一个卷积的想法,注意到如果普通的\(f_{i,0/1}\)转移的话发现\(1\)的转移是\(1^3,2^3,\dots\)什么的和\(\prod p\)什么的错位的在弄,但是我猜会爆精度。

事实上这个题在求连续1长度的三次方的期望,考虑先求出连续1长度1次方和2次方的期望,然后递推过来

设\(a_i\)代表前\(i\)位第\(i\)位为\(1\)的长度的期望

\[a_i=p_i(a_{i-1}+1)
\]

即在末尾长度+1,成功的概率是\(p_i\)

然后\(b_i\)代表前\(i\)位第\(i\)位为\(1\)的长度的平方的期望

\[b_i=p_i(b_{i-1}+2a_{i-1}+1)
\]

因为期望是线性的,所以可以直接按式子\(x^2->x^2+2x+1\)延伸贡献

形象点理解,其实这个两个式子求的都是\(00\dots00111\dots11\)这样的东西的期望。

然后延伸到立方其实是差不多的,但是为了统计答案需要稍微变形一下,\(ans_i\)代表前\(i\)位的答案

\[ans_i=(ans_{i-1}+3b_{i-1}+3a_{i-1}+1)p_i+ans_{i-1}(1-p_i)
\]

\(ans_{i-1}=c_{i-1}+oth_{i-1}\),事实上第一个式子应该这么拆开看,前面\(c_{i-1}\)是末尾极长\(1\)的答案,通过期望线性的方法和上面一样进行累加,\(oth_{i-1}\)的第\(i-1\)位是\(0\),但它一样需要乘一下概率,后面的就是延长失败累加答案了。

化简一下式子就成了

\[ans_i=ans_{i-1}+(3b_{i-1}+3a_{i-1}+1)p_i
\]


Code:

#include <cstdio>
const int N=1e5+10;
double a[N],b[N],c[N];
int main()
{
int n;scanf("%d",&n);
for(int i=1;i<=n;i++)
{
double p;scanf("%lf",&p);
a[i]=(a[i-1]+1)*p;
b[i]=(b[i-1]+2*a[i-1]+1)*p;
c[i]=c[i-1]+(3*b[i-1]+3*a[i-1]+1)*p;
}
printf("%.1lf\n",c[n]);
return 0;
}

2019.1.13

洛谷 P1654 OSU! 解题报告的更多相关文章

  1. 洛谷 P2058 海港 解题报告

    P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ...

  2. 洛谷 P3956 棋盘 解题报告

    P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...

  3. 洛谷 P1979 华容道 解题报告

    P1979 华容道 题目描述 小\(B\)最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时 ...

  4. BZOJ 3545 / 洛谷 P4197 Peaks 解题报告

    P4197 Peaks 题目描述 在\(\text{Bytemountains}\)有\(N\)座山峰,每座山峰有他的高度\(h_i\).有些山峰之间有双向道路相连,共\(M\)条路径,每条路径有一个 ...

  5. 虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告

    题目描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ...

  6. bzoj 4318 || 洛谷P1654 OSU!

    https://www.lydsy.com/JudgeOnline/problem.php?id=4318 https://www.luogu.org/problemnew/show/P1654 看来 ...

  7. 洛谷 P2672 推销员 解题报告

    P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为 ...

  8. 洛谷 P2679 子串 解题报告

    P2679 子串 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\)中出 ...

  9. 洛谷 P1076 寻宝 解题报告

    P1076 寻宝 题目描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共有\( ...

随机推荐

  1. 树上三角形 BZOJ3251

    分析: 模拟赛T3,其实很水,当时出于某些原因,没有去写这道题... len>46必定有解 为了满足不是三角形,那么斐波那契数列是最优选择,而斐波那契数列的第46项超过了2^31-1,所以超过4 ...

  2. centos 64位系统安装

    由于centos 64位镜像大于4G,所以U盘装不进去.iso镜像,选择网络安装的方法或者使用一个U盘制作启动盘和一个硬盘来装镜像的方法. 1 网络安装第一步 下载 CentOS 安装 ISO 浏览  ...

  3. 从0开始学golang--2.1--如何去爬园子的数据

    20天过去了,才开始写...主要还是因为自己懒吧.之前一边上班一边也有挤时间练习golang,可是写博客却老是不能行动,跑步也没跑了.突然的就懈怠了快一个月.可能也和开始玩the elder scro ...

  4. 数据结构与算法之Stack(栈)的应用——用stack实现一个计算器-/bin/calc.dart

    计算器的bin/calc.dart 可执行代码: import 'dart:io'; import 'package:data_struct/stack/sample/calculator.dart' ...

  5. 20155232《网络对抗》Exp 6 信息搜集与漏洞扫描

    20155232<网络对抗>Exp 6 信息搜集与漏洞扫描 一.实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版 ...

  6. Python+Matplotlib制作动画

    注: 在"实验设计与数据处理"的课后作业中,有一个数据可视化的作业,利用课程上学习的某种方法找一个二维函数的最大值,并将这个寻找的过程可视化.在作业里面利用了Matplotlib的 ...

  7. 原创zynq文章整理(MiZ702教程+例程)

    MiZ702教程+例程  网盘链接:  http://pan.baidu.com/s/1sj23yxv 不时会跟新版本,增加勘误之类的,请关注--

  8. idea java方法中 传多个参数对象 的复制粘贴快速处理方法

    比如像这种的传多个参数对象,我是直接复制过来,然后把第一个字母改成大写,然后后面的实例对象敲一个第一个字符的小写,回车就直接出来了 在写调用参数的地方,ctrl+p 调出提示,然后按下提示里的实例的第 ...

  9. Package 设计3:数据源的提取和使用暂存

    SSIS 设计系列: Package设计1:选择数据类型.暂存数据和并发 Package设计2:增量更新 Package 设计3:数据源的提取和使用暂存 在使用SSIS Package处理海量数据时, ...

  10. 软件测试--w模型

    W模型 优点:开发把随着整个开发周期,需求.和设计同样要测试,更早的介入测试,可以发现初期的缺陷,修复成本低:分阶段工作方便项目整体管理: 缺点:开发和测试依然是线性关系,需求的变更和调整,依然不方便 ...