WJMZBMR打osu! / Easy

by luogu

期望dp

很好的题,但是我太菜了

我开始的思路是统计?的个数,然后dfs处理

 但是发现N3e5我的想法也无法实现

 

len记录当前一连串 o 的个数

当遇到 x 时处理结束;

 

 

#include<bits/stdc++.h>

using namespace std;
const int N=3e5+7; 

int n;
long double dp[N],len;
//注意精度问题
//dp[i]->前 i的期望 
string a;

int main()
{
    ios::sync_with_stdio(false);
    cin>>n>>a;
    for(int i=1;i<=n;i++)
    {
        
        if(a[i-1]=='?')
            {
                dp[i]=dp[i-1]+len+0.5;
                len=(len+1)/2;
            }
        else if(a[i-1]=='o')
            {
                dp[i]=dp[i-1]+(len*2)+1;
                len++;
            }
        else if(a[i-1]=='x')
            {
                dp[i]=dp[i-1];
                len=0;
            }
            
    }

    
    printf("%.4Lf",dp[n]);
    return 0;
 } 

 

上一篇:VueEasySlider - 基于 Vue.js 的简洁开源轮播图组件


下一篇:C语言实现学生成绩管理系统(Easy图形界面)