zoukankan      html  css  js  c++  java
  • Codeforces 235B Let's Play Osu!

    题目大意

      现在有一个长度为n的只有ox组成的字符串。第i个位置上有pi的概率出现o,(1-pi)的概率出现x,如果有一段长度为L的全是o的部分,贡献就是L^2。求最后贡献的期望。

    题解

      这题有点思博啊……首先我们对于一个确定的串,从前往后扫,设当前o的长度为L,如果下一个是o的话,那么贡献就会增加(L+1)^2-L^2=2L+1.这样的话从前往后扫,我们维护两个值,一个是当前期望的o的长度now,一个是期望贡献ans,这样ans+=(2*now+1)*pi,now=(now+1)*pi

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstdlib>
     5 #include<cstring>
     6 using namespace std;
     7 int n;
     8 double p,now,ans;
     9 int main()
    10 {
    11     ans=0.0;now=0.0;
    12     scanf("%d",&n);
    13     for(int i=1;i<=n;i++)
    14     {
    15         cin>>p;
    16         ans+=(2*now+1)*p;now=(now+1)*p;
    17     }
    18     printf("%.10f",ans);
    19     return 0;
    20 }
    View Code
  • 相关阅读:
    CF375D Tree and Queries
    进制转换
    贪心问题
    next_permutation函数
    C++ STL
    一些排序总结
    KMP算法
    围圈报数
    车辆调度—模拟栈的操作
    搜索题
  • 原文地址:https://www.cnblogs.com/oldjang/p/6752484.html
Copyright © 2011-2022 走看看