前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BZOJ 3450: Tyvj1952 Easy

BZOJ 3450: Tyvj1952 Easy

作者头像
attack
发布2018-04-11 16:02:17
5520
发布2018-04-11 16:02:17
举报

Description

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

Input

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

Output

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

Sample Input

4 ????

Sample Output

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

HINT

Source

我们都爱GYZ杯

用dp[i][1]表示到达第i个点时的期望得分

用dp[i][0]表示到达第i个点时的最大o的长度

考虑转移

对于x,本轮无法得分dp[i][1]=dp[i-1][1],dp[i][0]=0

对于o,本轮得分为(l+1)^2=l^2+2*l+1,l^2在之前我们已经求出,2*l+1为本轮对答案的贡献

对于?,一开始我想多了,其实很简单,就是把上面两种情况加起来除2就好

代码语言:javascript
复制
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN=1e6+10;
 7 const int INF=0x7fffff;
 8 inline int read()
 9 {
10     char c=getchar();    int flag=1,x=0;
11     while(c<'0'||c>'9')    {if(c=='-')    flag=-1;c=getchar();}
12     while(c>='0'&&c<='9')x=x*10+c-48,c=getchar();return x*flag;
13 }
14 int meiyong;
15 double dp[MAXN][3];
16 char s[MAXN];
17 int main()
18 {
19     meiyong=read();
20     scanf("%s",s+1);
21     int ls=strlen(s+1);
22     for(int i=1;i<=ls;i++)
23     {
24         if(s[i]=='x')    dp[i][1]=dp[i-1][1],dp[i][0]=0;
25         if(s[i]=='o')    dp[i][1]=dp[i-1][1]+2*dp[i-1][0]+1,dp[i][0]=dp[i-1][0]+1;
26         if(s[i]=='?')    dp[i][1]=(dp[i-1][1]+dp[i-1][1]+2*dp[i-1][0]+1)/2,dp[i][0]=(dp[i-1][0]+1)/2;
27     }
28     printf("%.4lf",dp[ls][1]);
29     return 0;
30 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Description
  • Input
  • Output
  • Sample Input
  • Sample Output
  • HINT
  • Source
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档