3450: Tyvj1952 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


比较水的概率dp题。
设$f[i]$为前$i$个字符的期望分数,$g[i]$为第$i$个字符前连续的$o$的期望长度。
若当前有$x$个连续的$o$,则:
  下一个$o$对答案的贡献为$(x+1)^2-x^2=2\times x+1$,对连续的$o$的期望长度的贡献为$1$
  下一个$?$对答案的贡献为$\frac {0+(x+1)^2-x^2}{2}=\frac{2\times x+1}{2}$,对连续的$o$的期望长度的贡献为$\frac{1-l}{2}$
  下一个$x$对答案没有贡献,长度清0;
 #include<cstdio>
#include<cctype>
#define foru(i,x,y) for(int i=x;i<=y;i++)
using namespace std; double l,ans;
char ch;
int n;
int main(){
scanf("%d",&n);
foru(i,,n){
ch=getchar();
while(ch!='o'&&ch!='x'&&ch!='?')ch=getchar();
if(ch=='o')ans+=(++l)*-;
else if(ch=='x')l=;
else ans+=(l*+)*0.5,l=(l+)*0.5;
}
printf("%.4lf\n",ans);
}

bzoj 3450 Tyvj1952 Easy (概率dp)的更多相关文章

  1. BZOJ 3450 Tyvj1952 Easy ——期望DP

    维护$x$和$x^2$的期望递推即可 #include <map> #include <ctime> #include <cmath> #include <q ...

  2. Bzoj 3450: Tyvj1952 Easy (期望)

    Bzoj 3450: Tyvj1952 Easy 这里放上题面,毕竟是个权限题(洛谷貌似有题,忘记叫什么了) Time Limit: 10 Sec Memory Limit: 128 MB Submi ...

  3. bzoj4318 OSU!和bzoj 3450 Tyvj1952 Easy

    这俩题太像了 bzoj 3450 Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点 ...

  4. Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划

    3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 431  Solved: 325[Submit][Status] ...

  5. BZOJ 3450: Tyvj1952 Easy [DP 概率]

    传送门 题意:$ox?$组成的序列,$?$等概率为$o\ or\ x$,得分为连续的$o$的长度的平方和,求期望得分 一开始没想出来,原因在于不知道如何记录长度 其实我们同时求得分和长度的期望就好了 ...

  6. 【概率】BZOJ 3450:Tyvj1952 Easy

    Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连 ...

  7. BZOJ 3450 Tyvj1952 Easy(期望)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3450 [题目大意] 给出一个字符串,包含o,x和?,一个字符串的得分为 每段连续的o的 ...

  8. BZOJ 3450: Tyvj1952 Easy 数学期望

    Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...

  9. bzoj 3450: Tyvj1952 Easy

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 411  Solved: 309[Submit][Status][Discuss] Descriptio ...

随机推荐

  1. Charles下载与破解方法

    文章参考:charles4.2下载与破解方法以及配置https 1.Charles官网下载 地址:https://www.charlesproxy.com/latest-release/downloa ...

  2. Q8:String to Integer (atoi)

    8. String to Integer (atoi) 官方的链接:8. String to Integer (atoi) Description : Implement atoi to conver ...

  3. springBoot中的邮件发送

    1. 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  4. HDU_2256 矩阵快速幂 需推算

    最近开始由线段树转移新的内容,线段树学到扫描线这里有点迷迷糊糊的,有时候放一放可能会好一些. 最近突然对各种数学问题很感兴趣.好好钻研了一下矩阵快速幂.发现矩阵真是个计算神器,累乘类的运算原本要O(N ...

  5. 运用Access学习数据库的三大范式

    第一范式(1NF):强调的是列的原子性,即“列不能够再分成其他几列”,同一列中不能有多个值. 例子:业余爱好编码表+员工编码表 当员工杨来的业余爱好有多个时,此时的数据库设计不满足第一范式,可进行如下 ...

  6. LGOJ4299 首都

    这题是 \(LCT\) 维护子树信息中的 \(LCT\) 维护重心 Description link 题意概述:给定一个森林,要求支持以下操作 1.链接两个点 2.求一个点所在树的重心 3.求所有重心 ...

  7. 洛谷P1257(暴力超时)

    1.先输入再求勾股定理会超时 2.需要一边输入一边求. #include<iostream> #include<cmath>#include<cstdio> usi ...

  8. MQTT--Paho C Client 的实现和详解

    概述  在文章Paho - MQTT C Cient的实现中,我介绍了如何使用Paho开源项目创建MQTTClient_pulish客户端.但只是简单的介绍了使用方法,而且客户端的结果与之前介绍的并不 ...

  9. 12 Spring Data JPA:orm思想和hibernate以及jpa的概述和jpa的基本操作

    spring data jpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查询 d ...

  10. C++对象的动态建立与释放

    new运算符动态分配堆内存  (从堆分配一块“类型”大小的存储空间,并且返回首地址) 1.写程序的时候,经常需要动态的分配和撤销内存空间,C语言中常常是利用库函数 malloc 和 free 来分配和 ...