码迷,mamicode.com
首页 > 其他好文 > 详细

●Joyoi Easy

时间:2018-03-11 12:08:03      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:pos   style   AC   log   ace   int   space   font   gpo   

题链:

http://www.joyoi.cn/problem/tyvj-1952
题解:

概率dp
(先做的BZOJ 4318: OSU!,然后就感觉这个题很简单了)
链接:
令p[i]表示第i个位置为o的概率。
定义g[i]表示以i位置结尾形成1的期望长度
g[i]=p[i]*(g[i-1]+1)
在定义f[i]表示从1到i位置的期望得分,
分为i位置为o和为x两种情况
f[i]=p[i]*(f[i-1]+2*g[i-1]+1)+(1-p)*f[i-1]


代码:

 

#include<bits/stdc++.h>
#define MAXN 300005
using namespace std;
double g[MAXN],f[MAXN];
char S[MAXN];
int N;
int main(){
	ios::sync_with_stdio(0);
	cin>>N>>(S+1);
	for(int i=1;i<=N;i++){
		double p;
		switch(S[i]){
			case ‘o‘:p=1;break;
			case ‘x‘:p=0;break;
			case ‘?‘:p=0.5;break;
		}
		g[i]=p*(g[i-1]+1);
		f[i]=p*(f[i-1]+2*g[i-1]+1)+(1-p)*f[i-1];
	}
	cout<<fixed<<setprecision(4)<<f[N]<<endl;
	return 0;
}

 

  

 

●Joyoi Easy

标签:pos   style   AC   log   ace   int   space   font   gpo   

原文地址:https://www.cnblogs.com/zj75211/p/8543020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!