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