zoukankan      html  css  js  c++  java
  • 【ybtoj】【期望问题】期望得分

    题意

    image

    题解

    刚接触期望问题,很容易想到 (f(i,j)) 表示前 (i) 个字符,最后有 (j) 个连续的 o 的期望得分。
    不过这样还要记录 (p_j) 表示当前末尾出现连续 (j) 个字符的概率,且 (f) 为两维显然空间不足。
    所以要充分利用期望的性质:可加性,可乘性。
    重新考虑的时候想到连续 (x) 个 o 之后再加上一个 o ,对答案的贡献为 ((x+1)^2-x^2=2x+1).
    (p) 数组舍去,直接记录当前末尾 o 的期望长度,就可以直接转移。
    代码非常简短。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int INF = 0x3f3f3f3f,N = 3e5+10;
    inline ll read()
    {
    	ll ret=0;char ch=' ',c=getchar();
    	while(!(c>='0'&&c<='9')) ch=c,c=getchar();
    	while(c>='0'&&c<='9') ret=(ret<<1)+(ret<<3)+c-'0',c=getchar();
    	return ch=='-'?-ret:ret;
    }
    int n;
    char s[N];
    double elen,ans; 
    int main()
    {
    	n=read();
    	scanf("%s",s+1);
    	for(int i=1;i<=n;i++) 
    	{
    		if(s[i]=='o') ans+=2*elen+1,elen++;
    		else if(s[i]=='x') elen=0;
    		else ans+=(2*elen+1)*0.5,elen=0.5*(elen+1); 
    	}
    	printf("%.4lf",ans);
    	return 0;
    }
    
  • 相关阅读:
    20200304(10)
    20200303Tuesday(9)
    词根词缀explicit(8)
    词根词缀(7)
    20200303(6)
    什么是ring0-ring3
    20200301a
    mark字体大全
    评估评价 提高专项(5)
    图的广度优先遍历算法
  • 原文地址:https://www.cnblogs.com/conprour/p/15308503.html
Copyright © 2011-2022 走看看