• P1365 WJMZBMR打osu! / Easy


    题目背景

    原 维护队列 参见P1903

    题目描述

    某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(

    我们来简化一下这个游戏的规则

    nnn 次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续 aaa 个combo就有 a×aa imes aa×a 分,combo就是极大的连续o

    比如ooxxxxooooxxx,分数就是 2×2+4×4=4+16=202 imes 2 + 4 imes 4 = 4 +16=202×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(4+9)/2 =6.5(4+9)/2=6.5 了

    输入输出格式

    输入格式:

    第一行一个整数 nnn ,表示点击的个数

    接下来一个字符串,每个字符都是o,x,?中的一个

    输出格式:

    一行一个浮点数表示答案

    四舍五入到小数点后 444 位

    如果害怕精度跪建议用long double或者extended

    输入输出样例

    输入样例#1: 
    4
    ????
    输出样例#1: 
    4.1250

    说明

    osu很好玩的哦

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

    Solution:

      期望题总是贼有意思。

      本题期望combo为$o$的期望连续长度的平方,所以我们设$f[i]$表示到了第$i$位的总期望combo,$g[i]$表示到了第$i$位结尾的连续$o$的期望长度,那么分情况讨论:

      1、当$s[i]==x$,则$f[i]=f[i-1],g[i]=0$;

      2、当$s[i]==o$,则$f[i]=f[i-1]+2*g[i-1]+1,g[i]=g[i-1]+1$($f[i]=f[i-1]+2*g[i-1]+1$是因为$f[i]=(g[i-1]+1)^2=g[i-1]^2+2*g[i-1]+1;,;g[i-1]^2=f[i-1]$);

      3、当$s[i]==?$,则$f[i]=f[i-1]+g[i-1]+0.5,g[i]=frac{g[i-1]+1}{2}$;

      由于不知道$n$的范围,不好开数组,但是我们发现转移时当前的状态只与上一次的状态有关,于是直接滚掉就好了。

    代码:

    #include<bits/stdc++.h>
    #define il inline
    #define ll long long
    #define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
    #define Bor(i,a,b) for(int (i)=(b);(i)>=(a);(i)--)
    using namespace std;
    int n,cnt;
    char s;
    double f[2],g[2];
    
    int main(){
        ios::sync_with_stdio(0);
        cin>>n;
        For(i,1,n){
            cin>>s;
            if(s=='x') f[cnt^1]=f[cnt],g[cnt^1]=0;
            else if(s=='o') f[cnt^1]=f[cnt]+2*g[cnt]+1,g[cnt^1]=g[cnt]+1;
            else f[cnt^1]=f[cnt]+g[cnt]+0.5,g[cnt^1]=g[cnt]/2+0.5;
            cnt^=1;
        }
        printf("%.4lf",f[cnt]);
        return 0;
    }
  • 相关阅读:
    国际区号选取组件
    python和js执行字符串函数
    mysql存储过程循环遍历某个表以及事件
    mysql创建远程用户
    ubuntu改文件夹权限
    mysql最大连接数
    MSYS
    Eclipse Java 可视化插件
    你不知道的继承
    vue3.x
  • 原文地址:https://www.cnblogs.com/five20/p/9384250.html
Copyright © 2020-2023  润新知