• bzoj3450 Easy


    题目描述

    某一天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了

    输入格式

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

    输出格式

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

    提示

    osu很好玩的哦
    WJMZBMR技术还行(雾),x基本上很少呢

    n<=300000

    提示完全没有什么用

    发现对于一段长度为i的o很不好求

    所以差分一下

    计算每一位的前面的连续的o的长度的期望sum

    那么这一位如果为o的话它的贡献就是2*L+1

    然后随便算一算就好了

    //%std
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<vector>
    #include<queue>
    #include<stack>
    #include<set>
    #include<map>
    using namespace std;
    #define lovelive long long
    #define lc son[x][0]
    #define rc son[x][1]
    #define lowbit(x) (x&(-x))
    #define pt vc
    void read(int &x)
    {
      int p=1;
      x=0;
      char c=getchar();
      while(c<'0'||c>'9')
      {
        if(c=='-')
          p=-1;
        c=getchar();
      }
      while(c>='0'&&c<='9')
      {
          x=x*10+c-48;
          c=getchar();
      }
      x*=p;
    }
    char s[300030];
    int main()
    {
      int n;
      read(n);
      scanf("%s",s+1);
      double ans=0,sum=0;
      for(int i=1;i<=n;i++)
      {
          if(s[i]=='o')
            ans+=(2*sum+1),sum++;
          else
          {
            if(s[i]=='x')
              sum=0;
            else
              ans+=(2*sum+1)/2,sum=(sum+1)/2;
        }
      }
      printf("%.4lf",ans);
      return 0;
    }
    View Code

    bzoj权限题

    不过可以在这上面交

  • 相关阅读:
    WebService-01-使用jdk发布第一个WebService服务并调用
    Oracle触发器
    java调用存储过程、存储函数
    存储过程/存储函数
    SQL查询排名第二名的信息
    sql行转列
    SELECT列表中的标量子查询
    sql子查询在insert、update、delete中的应用
    sqlserver存储过程中,set rowcount 0是什么意思?
    固态硬盘安装系统
  • 原文地址:https://www.cnblogs.com/NicoDafaGood/p/8848028.html
Copyright © 2020-2023  润新知