Easy

Description

某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(
我们来简化一下这个游戏的规则
有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o。
比如ooxxxxooooxxx,分数就是2*2+4*4=4+16=20。
Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地方o或者x各有50%的可能性,用?号来表示。
比如oo?xx就是一个可能的输入。
那么WJMZBMR这场osu的期望得分是多少呢?
比如oo?xx的话,?是o的话就是oooxx => 9,是x的话就是ooxxx => 4
期望自然就是(4+9)/2 =6.5了

Input

第一行一个整数n,表示点击的个数
接下来一个字符串,每个字符都是ox?中的一个

Output

一行一个浮点数表示答案
四舍五入到小数点后4位
如果害怕精度跪建议用long double或者extended

Sample Input

4
????

Sample Output

4.1250

HINT

n<=300000

osu很好玩的哦

WJMZBMR技术还行(雾),x基本上很少呢

题解

用dp[i]表示第i次点击的期望得分,len[i]表示第i次点击时o的期望长度。

分类讨论如下:

1.当第i次点击为o时    
显然o的长度+1,该次得分为(len[i−1]+1)^2=len[i−1]^2+2*len[i−1]+1所以此次点击的贡献为2len[i−1]+1

2.当第i次点击为x时
o的长度变为0,该次得分等于上一次得分。

3.当第i次点击为?时
?的情况下,o和x的概率各为50%,所以该次点击的贡献等于两种情况的平均值,长度同理,即:

dp[i]=dp[i−1]/2+(dp[i-1]+2len[i−1]+1)/2
len[i]=0/2+(len[i−1]+1)/2;

说实话这题也没用dp。。。

#include<bits/stdc++.h>
using namespace std;
const int M=3e5+5;
int n;
double dp[M],len[M];
char ch[M];
void in()
{scanf("%d%s",&n,ch);}
void ac()
{for(int i=0;i<n;++i){if(ch[i]=='o')len[i]=len[i-1]+1,dp[i]=dp[i-1]+2*len[i-1]+1;elseif(ch[i]=='x')len[i]=0,dp[i]=dp[i-1];else len[i]=(len[i-1]+1)*0.5,dp[i]=dp[i-1]+len[i-1]+0.5;}printf("%.4lf",dp[n-1]);
}
int main()
{in();ac();return 0;
}

期望dp--BZOJ3450 Easy相关推荐

  1. WJMZBMR打osu! / Easy【期望dp】

    >Link luogu P1365 >Description 有一个长度为 n 的仅由ooo,xxx,???三个字符组成的字符串 设字符串的分数为:其中长度为 aaa 的只包含 ooo 的 ...

  2. [洛谷 1365] WJMZBMR打osu! / Easy {期望DP}

    题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...

  3. 【BZOJ4318】OSU!【期望DP】

    题意: 有 n 个操作,有 Ai 的概率成功,连续成功 x 次 对答案的贡献是 x ^ 3,断掉就要重新记,求期望的答案  ( 期望DP )这道题和 bzoj3450一样,题意也一样,不过要注意的是平 ...

  4. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  5. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  6. 【bzoj4318】OSU! 期望dp

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

  7. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  8. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  9. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  10. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

最新文章

  1. [scala-spark]2. Scala运行原理与源码查看
  2. 实操|如何将 Containerd 用作 Kubernetes runtime
  3. .net自定义控件Control、WebControl、CompositeControl
  4. linux libbz2.so.1,libbz2.so.1.0 = not found 试过了链接和设置环境变量
  5. 29 | 如何判断一个数据库是不是出问题了?
  6. C#算法设计排序篇之08-计数排序(附带动画演示程序)
  7. windows IDA 调试SO
  8. SQL优化的一些总结
  9. IDEA 插件开发 发送弹框提示信息
  10. 通过ROBOCOPY工具快速删除文件夹
  11. 硬盘出现坏道的处理方法
  12. cf英文名字格式好看的_cf好看的英文名字格式:、I (~) you ?
  13. 关于微信小程序中时间预约的简单实现
  14. 用引导对象生成图像描述(Intention Oriented Image Captions with Guiding Objects 翻译)
  15. raptor的基本符号有_Raptor 基本符号有( )。
  16. websphere安装was8.5
  17. 商务个人邮箱如何注册申请?商务邮箱账号怎么登录?
  18. 熬夜整理小米Java面试题,已拿offer
  19. 计算机组成原理第二章例题解析(下)
  20. 与幼儿园小朋友一起过感恩节心得

热门文章

  1. 根据录入的计算公式计算_超全的铝材重量计算公式
  2. python有趣的代码-分享几款由quot;Python”语言编写的quot;有趣、恶搞、好玩”的程序代码...
  3. 学python需要什么基础-自学Python需要怎样的基础和准备
  4. python趣味编程100例-达人迷 Python趣味编程10例
  5. python下载-【Python下载 官方版】Python 3.8.0-ZOL软件下载
  6. 讯飞输入法10周年:日语音交互次数超10亿
  7. 语音识别技术原理概述!
  8. 博越同级别没对手!敢和同级别quot;王者quot;硬碰硬!
  9. 语音识别 AI 挑战赛上线:用深度学习三种结构,对 50 种环境声音分类!
  10. cover 在html中的作用,Cover