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

n<=300000

osu很好玩的哦

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

Source

我们都爱GYZ杯


一道简单的期望dp。

先转移最长期望后缀长度,然后转移答案。

即用f[i]表示从i开始的后缀的期望连续o长度,g[i]表示前i个字母的期望贡献。

然后就可以转移了。

注意到如果第i个是o的期望是p。

那么有状态转移方程:

f[i]=(f[i−1]+1)∗p" role="presentation" style="position: relative;">f[i]=(f[i−1]+1)∗pf[i]=(f[i−1]+1)∗p

g[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗p" role="presentation" style="position: relative;">g[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗pg[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗p

然后化简第二个式子。

=>g[i]=g[i−1]+(2∗f[i−1]+1)∗p" role="presentation" style="position: relative;">g[i]=g[i−1]+(2∗f[i−1]+1)∗pg[i]=g[i−1]+(2∗f[i−1]+1)∗p

代码:

#include<bits/stdc++.h>
#define N 300005
using namespace std;
char s[N];
int n;
double f[N],g[N];
int main(){
    scanf("%d%s",&n,s+1);
    for(int i=1;i<=n;++i){
        double tmp;
        if(s[i]=='o')tmp=1.0;
        else if(s[i]=='x')tmp=0.0;
        else tmp=0.5;
        f[i]=(f[i-1]+1.0)*tmp,g[i]=g[i-1]+(f[i-1]*2.0+1.0)*tmp;
    }
    printf("%.4lf",g[n]);
    return 0;
}

2018.08.30 Tyvj1952 Easy(期望dp)的更多相关文章

  1. 2018.08.30 花园(期望dp)

    题目背景 SCOI2017 DAY2 T1 题目描述 小 A 的花园的长和宽分别是 L,H .小 A 喜欢在花园里做游戏.每次做游戏的时候,他都先把花园均匀分割成 L×H 个小方块,每个方块的长和宽都 ...

  2. 【BZOJ3450】Tyvj1952 Easy 期望DP

    [BZOJ3450]Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是 ...

  3. 2018.08.30 游戏(概率dp)

    题目描述 Alice 和 Bob 两个人正在玩一个游戏,游戏有很多种任务,难度为 p 的任务(p是正整数),有 1/(2^p) 的概率完成并得到 2^(p-1) 分,如果完成不了,得 0 分.一开始每 ...

  4. BZOJ 3450 Tyvj1952 Easy ——期望DP

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

  5. 2018.08.30 bzoj4318: OSU!(期望dp)

    传送门 简单期望dp. 感觉跟Easy差不多,就是把平方差量进阶成了立方差量,原本维护的是(x+1)2−x2" role="presentation" style=&qu ...

  6. 2018.08.30 bzoj4720: [Noip2016]换教室(期望dp)

    传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: ...

  7. bzoj 3450 Tyvj1952 Easy (概率dp)

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

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

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

  9. 【BZOJ3450】Easy [期望DP]

    Easy Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~ ...

随机推荐

  1. apache中 MaxClients 与MaxRequestsPerChild

    据现象来对APACHE调优,以前用MAXCLIENTS 3000,砖家建议后,改为1500,今天查资料如下: http://www.linuxqq.net/ MaxClients 要加到多少?连接数理 ...

  2. JavaScript加法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  3. CentOS 7 JDK安装

    官网:  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.下载(下图有个错误 ...

  4. H5-BLOB

    BLOB 对象为h5的产物.普遍用于传输或者存储数据. <a 标签的新属性 download 表明 此a标签点击后,不是href跳转而是要下载.download的内容表示下载文件名.但是目前部分 ...

  5. 根据img的url 判断img的图片大小

    // 图片地址 后面加时间戳是为了避免缓存 var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Dat ...

  6. websocket使用

    兼容性介绍 : https://caniuse.com/#search=websockets var websocket = null; //判断当前浏览器是否支持WebSocket if ('Web ...

  7. javascript知识点积累

    8年javascript知识点积累   08年毕业就开始接触javascript,当时是做asp.net发现很多功能用asp.net控件解决不了,比如checkbox单选,全选问题,自动计算总价问题, ...

  8. sql查询分析器中显示行号

    -- 工具-> -- 选项-> -- 文本编辑器-> -- 所有语言-> -- 常规-> -- 显示-> -- 行号

  9. FP-growth算法高效发现频繁项集(Python代码)

    FP-growth算法高效发现频繁项集(Python代码) http://blog.csdn.net/leo_xu06/article/details/51332428

  10. scala 基本语法

    1.对于一个二元数组,键值对(k,v) 用map的时候,要取第一个或者第二个元素,用 _1 或者 _2表示. scala> words.take(2)res40: Array[(String, ...