题意:

某一天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<=300000

思路:几年前某场联赛模拟的题

显然有一个二维dp[i][j]表示当前到第i位,后缀o的长度为j的期望

对于a[i]=?

\[ dp[i][j]=(dp[i+1,j+1]+(j+1)^2-j^2+dp[i+1][0])/2 \]

于是发现j变大1的贡献是线性的2j+1,而期望具有线性的可加性

所以第二维可以省略

设f[i]为当前到第i位的期望,g[i]为当前到第i位后缀o长度的期望

转移类似

 #include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair
#define N 1100000
#define MOD 1000000007
#define eps 1e-8
#define pi acos(-1) char a[N];
double f[N],g[N]; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} int main()
{
//freopen("bzoj3450.in","r",stdin);
//freopen("bzoj3450.out","w",stdout);
int n;
scanf("%d",&n);
scanf("%s",a+);
for(int i=;i<=n;i++)
{
if(a[i]=='x'){f[i]=f[i-]; g[i]=;}
if(a[i]=='o'){f[i]=f[i-]+g[i-]*+; g[i]=g[i-]+;}
if(a[i]=='?'){f[i]=f[i-]+g[i-]+0.5; g[i]=(g[i-]+)/;}
}
printf("%.4lf\n",f[n]);
return ;
}

最新文章

  1. 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
  2. ElasticSearch 常用的查询过滤语句
  3. 深入浅出Java并发包—锁机制(二)
  4. chrome渲染hover状态tranform相邻元素抖动bug
  5. C# GC.Collect()
  6. VS2010引用项目dll,编译时报错
  7. (转)Asp.net的HttpCookie写入汉字读取时为乱...
  8. 将Ojective-C代码移植转换为Swift代码
  9. __dict__
  10. 初识JDBC
  11. javascript学习-基本类型
  12. git本地仓库 push到远程仓库出现错误
  13. vscode 完全支持zeng code的写法
  14. What’s Brewing for .NET Developers
  15. ACCESS常用数字类型的说明和取值范围
  16. Spark学习笔记-GraphX-1
  17. Alpha冲刺报告(3/12)(麻瓜制造者)
  18. EM算法与混合高斯模型
  19. Spring MVC 3.0 深入及对注解的详细讲解[转载]
  20. POJ 2337 Catenyms

热门文章

  1. python基础一 day14 复习
  2. C++ C++ 值传递、指针传递、引用传递详解
  3. CVE-2010-3333
  4. UEditor1.4.3的实例程序
  5. Luogu P3627 抢掠计划
  6. javaEE(12)_数据库连接池
  7. windows下pycharm使用Anaconda安装包环境
  8. [LUOGU] 2820 局域网
  9. (28)zabbix用户宏变量详解macro
  10. opencv中相关的矩阵运算