更新的题解可看 此处

你说得对但是 恐怖日本病毒会自动向你的电脑中下载 OSU!

题意简述

一个 01 串,每个位置有 \(p_{i}\) 的概率为 \(1\),连续的 \(x\) 个 \(1\) 贡献 \(x^{3}\) 的分数,求总分数期望.

解法

我们考虑将前 \(i\) 位的期望拓展到前 \(i+1\) 位,假设我们已经求出了前 \(i\) 位的期望 \(E(i)\).

拓展的时候有 \(p_{i}\) 的概率为 \(1\),此时的值为 \(E_{3}(i+1)=(E(i)+1)^{3}=E_{3}(i)+3E_{2}(i)+3E(i)+1\) (因为分数是可以直接三次方的,因此我们这么转移),那么这种情况的期望为 \(p_{i}\times E_{3}(i+1)\)

这里的 \((E(i)+1)^{3}\) 的展开实际上用了种比较泛的写法,实际上,关于为什么它展开是 \(E_{3}(i)\) 而不是 \(E(i)^{3}\),是因为我们并不是给 \(E\) 做的三次方,而是给分数做的三次方. 假设我们已经有 \(x\) 个连续的 \(1\) 来贡献 \(x^{3}\) 分,那么再添加一个 \(1\) 时,分数就会变成 \((x+1)^{3}\),由此推导出一个有关贡献分数 \(x^{2},x^{1}\) 的式子.

也有另外 \(1-p_{i}\) 的概率为 \(0\),此时不会有任何变化,即这种情况的期望为 \((1-p_{i})\times E_{3}(i)\)

因此,转移总期望为

\[E^{3}(i+1)=((E(i)+1)^{3}=E_{3}(i)+3E_{2}(i)+3E(i)+1)\times p_{i}+(1-p_{i})\times E_{3}(i)
\]

可以发现这里还有个问题,就是我们没办法通过 \(E_{3}(i)\) 推出 \(E_{2}(i)\) 和 \(E(i)\) (注意,这里的 \(E_{3}\) 并不是单纯的三次方,而是表示连续的 \(x\) 个 \(1\) 贡献 \(x^{3}\) 的分数时的期望,\(E_{2}\) 同理,因此我们推不出来),又注意到我们只有在新加入一个 \(1\) 的时候用到了这样的数据,因此尝试维护一个 \(E(i)\) 表示前 \(i\) 位且第 \(i\) 位为 \(1\) ,并且连续的 \(x\) 个 \(1\) 贡献 \(x^{1}\) 的分数时的期望(因为为 \(0\) 的我们用不到,这样定义方便维护). 同样定义 \(E_{2}\).

可以仿效推出转移方程:(因为只剩一种情况了,好推)

\[E(i+1)=(E(i)+1)\times p_{i}
\]
\[E_{2}(i+1)=(E(i)+1)^{2}\ p_{i}=(E_{2}(i)+2E(i)+1)\times p_{i}
\]

带入求解即可.

代码

#include<bits/stdc++.h>
using namespace std;
long double a[100001],b[100001],f[100001],p[100001];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;++i){
cin>>p[i];
a[i]=(a[i-1]+1)*p[i];
b[i]=(b[i-1]+2*a[i-1]+1)*p[i];
f[i]=f[i-1]*(1-p[i])+(f[i-1]+3*b[i-1]+3*a[i-1]+1)*p[i];
}
printf("%.1Lf",f[n]);
}

[Tkey] OSU!的更多相关文章

  1. .net源码分析 – Dictionary<TKey, TValue>

    接上篇:.net源码分析 – List<T> Dictionary<TKey, TValue>源码地址:https://github.com/dotnet/corefx/blo ...

  2. .net源码分析 - ConcurrentDictionary<TKey, TValue>

    List源码分析 Dictionary源码分析 ConcurrentDictionary源码分析 继上篇Dictionary源码分析,上篇讲过的在这里不会再重复 ConcurrentDictionar ...

  3. C# KeyValuePair<TKey,TValue>的用法-转载

    C# KeyValuePair<TKey,TValue>的用法.结构体,定义可设置或检索的键/值对.也就是说我们可以通过 它记录一个键/值对这样的值.比如我们想定义一个ID(int类型)和 ...

  4. .NET中Dictionary<TKey, TValue>浅析

    .NET中Dictionary<TKey, Tvalue>是非常常用的key-value的数据结构,也就是其实就是传说中的哈希表..NET中还有一个叫做Hashtable的类型,两个类型都 ...

  5. .net学习笔记----有序集合SortedList、SortedList<TKey,TValue>、SortedDictionary<TKey,TValue>

    无论是常用的List<T>.Hashtable还是ListDictionary<TKey,TValue>,在保存值的时候都是无序的,而今天要介绍的集合类SortedList和S ...

  6. IDictionary<TKey, TValue> vs. IDictionary

    Enumerating directly over an IDictionary<TKey,TValue>returns a sequence of  KeyValuePair struc ...

  7. Dictionary<TKey, TValue> 类

    C# Dictionary<TKey, TValue> 类 Dictionary<TKey, TValue> 泛型类提供了从一组键到一组值的映射.字典中的每个添加项都由一个值及 ...

  8. 线程安全集合 ConcurrentDictionary<TKey, TValue> 类

    ConcurrentDictionary<TKey, TValue> 类 [表示可由多个线程同时访问的键/值对的线程安全集合.] 支持 .NET Framework 4.0 及以上. 示例 ...

  9. 2014 Asia AnShan Regional Contest --- HDU 5078 Osu!

    Osu! Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5078 Mean: 略. analyse: 签到题,直接扫一遍就得答 ...

  10. UVALive 7270 Osu! Master (阅读理解题)

    题目:传送门. 题意:阅读理解题,是一个osu的游戏,问得分.把题目翻译过来就是如果出现S或者BC后面跟的是1,ans就加1. #include <iostream> #include & ...

随机推荐

  1. 解决react native打包apk文件安装好之后进入应用闪退的问题

    这个是我一个前端前辈帮我弄的,自己解决的时候不行,她去官网找了相关的问题,然后发给我的. react-native android 的release安装包运行闪退,但是debug运行正常 环境:0.6 ...

  2. 题解:CF1957A Stickogon

    CF1957A Stickogon 题意 题意十分简单,给予你 \(n\) 个棍子,问这些棍子可以构成多少个正多边形. 思路 说是可以构成多少个正多边形,所以我们可以用边最少的正多边形等边三角形来计数 ...

  3. CF 1927

    G link 定义\({{dp_i}_j}_k\)为考虑完第i个点,最左边没有染色的点为\(j\),最右边没有染色的点为\(k\)的最小数量. 考虑转移(用自己更新别人) 如果不用\(i\),直接转移 ...

  4. LeetCode455.分发饼干

    LeetCode题目链接:https://leetcode.cn/problems/assign-cookies/description/ 题目叙述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干 ...

  5. 8、IDEA集成Git

    8.1.配置Git忽略文件 8.1.1.忽略文件的原因 在使用 IDE 工具时,会自动生成一些和项目源码无关的文件,所以可以让 Git 忽略这些文件. 此外,把这些无关文件忽略掉,还能够屏蔽不同 ID ...

  6. 【SpringBoot】Re 01 补充学习

    对SpringBoot后续的再补充学习: 使用IDEA创建项目不勾选任何组件 默认的POM结构: <?xml version="1.0" encoding="UTF ...

  7. 【转载】 DQN玩Atari游戏安装atari环境bug指南

    版权声明:本文为CSDN博主「好程序不脱发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/ningmengzh ...

  8. Redis源码安装(Linux环境)

    下载源码: wget https://download.redis.io/redis-stable.tar.gz 解压: tar -xzvf redis-stable.tar.gz 编译&安装 ...

  9. 强化学习的REIINFORCE算法和交叉熵RL算法

    注意: 本文并不讲REINFORCE算法,而是讲强化学习的交叉熵算法,关于REINFORCE算法可以参看: https://www.cnblogs.com/devilmaycry812839668/p ...

  10. 亚信科技基于 Apache SeaTunnel 的二次开发应用实践

    亚信科技在Apache SeaTunnel的实践分享 自我介绍 各位同学好,很荣幸通过Apache SeaTunnel社区和大家进行分享交流.我是来自亚信科技的潘志宏,主要负责公司内部数据中台产品的开 ...