首页 > 其他分享 >概率期望学习笔记总结

概率期望学习笔记总结

时间:2023-07-21 21:46:50浏览次数:60  
标签:总结 ch 期望 level int 样例 笔记 times dp

一.

OSU!

题目背景

原 《产品排序》 参见P2577

题目描述

osu 是一款群众喜闻乐见的休闲软件。

我们可以把 osu 的规则简化与改编成以下的样子:

一共有 \(n\) 次操作,每次操作只有成功与失败之分,成功对应 \(1\),失败对应 \(0\),\(n\) 次操作对应为 \(1\) 个长度为 \(n\) 的 01 串。在这个串中连续的 \(X\) 个 \(1\) 可以贡献 \(X^3\) 的分数,这 \(x\) 个 \(1\) 不能被其他连续的 \(1\) 所包含(也就是极长的一串 \(1\),具体见样例解释)

现在给出 \(n\),以及每个操作的成功率,请你输出期望分数,输出四舍五入后保留 \(1\) 位小数。

输入格式

第一行有一个正整数 \(n\),表示操作个数。接下去 \(n\) 行每行有一个 \([0,1]\) 之间的实数,表示每个操作的成功率。

输出格式

只有一个实数,表示答案。答案四舍五入后保留 \(1\) 位小数。

样例 #1

样例输入 #1

3 
0.5 
0.5 
0.5

样例输出 #1

6.0

提示

【样例说明】

\(000\) 分数为 \(0\),\(001\) 分数为 \(1\),\(010\) 分数为 \(1\),\(100\) 分数为 \(1\),\(101\) 分数为 \(2\),\(110\) 分数为 \(8\),\(011\) 分数为 \(8\),\(111\) 分数为 \(27\),总和为 \(48\),期望为 \(\dfrac{48}8 = 6.0\)。

\(n \leq 1 \times 10 ^ 5\)。

一.背景

《osu!》是一款Microsoft Windows平台上的同人音乐游戏。由Dean Herbert(Peppy)使用.NET Framework中的C#编写,后来升级为.NET 6.0并陆续在Mac OS、iOS、Android、Windows Phone等平台推出。游玩方式的设计参考了《押忍!战斗!应援团》、《太鼓达人》、《BeatmaniaIIDX》、《O2Jam》和《DJMax》,游戏共有osu!标准模式、osu!taiko、osu!catch以及osu!mania共四种玩法,深受各类音乐游戏玩家的喜爱。

二.前言

先用状压的思想做但是发现\(n\leq 1\times10^5\)

对于每个状态算出它的概率和求和然后加到一块容易写出一下代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
namespace Testify{
    inline int read(){
        int f(1),x(0);
        char ch=getchar();
        for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
        for(;isdigit(ch);ch=getchar()) x=(x<<1)+(x<<3)+(ch^48);
        return f*x;
    }
    inline void Write(int x){
        if(x>9) Write(x/10);
        putchar(x%10+'0');
    }
    inline void write(int x){
        if(x<0) putchar('-'),x=-x;
        Write(x);
        putchar('\n');
    }
}
using namespace Testify;
const int N=1e5+5;
int n;
double op[N];
inline double P(int s){
    double Ecstasy(1);
    int cnt(0);
    for(register int i=1;i<=n;i++){
        cnt++;
        if(s&1){
            Ecstasy*=op[cnt];
        }
        else{
            Ecstasy*=(1.0-op[cnt]);
        }
        if(s){
            s>>=1;
        }
    }
    return Ecstasy;
}
inline double Sigma(int s){
    int Ecstasy(0);
    int cnt=0;
    while(s){
        while(s&1){
            cnt++;
            s>>=1;
        }
        Ecstasy+=(cnt*cnt*cnt);
        cnt=0;
        s>>=1;
    }
    return Ecstasy;
}
signed main(){
    n=read();
    for(register int i=1;i<=n;i++){
        scanf("%lf",&op[i]);
    }
    double Tempestissimo(0);
    for(register int s=1;s<(1<<n);s++){
       
        double gai=P(s);
        Tempestissimo+=(gai*Sigma(s));
    }
    printf("%.1lf",Tempestissimo);
    return 0;
}

然后得了10分
因为\(n\)数据太大,肯定不能暴力枚举

三.思路

对于每个排列

$\ \ \ \ \ \ \ (x+1)^3 $

\(=(x+1)\times (x+1)\times (x+1)\)

\(=(x^2+2x+1)\times (x+1)\)

\(=x^3+x^2+2x^2+2x+x+1\)

\(=x^3+3x^2+3x+1\)

所以

\((x+1)^3\)比\(x^3\)多了\(3x^2+3x+1\)

即\(x^3[i]=x^3[i-1]+3\times x^2[i-1]+3\times x^1[i-1]+1\)


$\ \ \ \ \ \ \ (x+1)^2 $

\(=(x+1)\times (x+1)\)

\(=x^2+2\times x+1\)

所以

\((x+1)^2\)比\(x^2\)多了\(2\times x+1\)

即\(x^2[i]=x^2[i-1]+2\times x^1[i-1]+1\)

那么我们只需要维护\(x^2\)和\(x^1\)的期望 就能求出\((x+1)^3\)力

设\(dp[i]\)表示前\(i\)种情况の期望,即\(x^3[i]\)

\(x1[i]\)表示第\(i\)种情况的\(x\)の期望,即\(x^2[i]\)

\(x2[i]\)表示第\(i\)种情况的\(x^2\)の期望,即\(x^1[i]\)

那么我们可以得到式子

image

所以只要在算出上式再$\times $上本次操作の概率就能得出期望力

标签:总结,ch,期望,level,int,样例,笔记,times,dp
From: https://www.cnblogs.com/phigros/p/17572383.html

相关文章

  • 20230720练习总结
    CF1523HHoppingAroundtheArray写在前面:毒瘤翻译!!!原题面有一句"Agrasshoppercanhoparoundthesellsaccordingtothefollowingrule"翻译过来就是不能删去起点和终点,翻译题面没有这句话!!!调了一个下午,答案一直比标答小!!!先忽略询问的终点,那么从\(i\)起跳,一定是跳到\([......
  • 「学习笔记」AC 自动机
    AC自动机是 以Trie的结构为基础,结合 KMP的思想 建立的自动机,用于解决多模式匹配等任务。Trie的构建这里需要仔细解释一下Trie的结点的含义,Trie中的结点表示的是某个模式串的前缀。我们在后文也将其称作状态。一个结点表示一个状态,Trie的边就是状态的转移。形式化地......
  • 20230721巴蜀暑期集训测试总结
    T1似乎想复杂了。搓了一个\(O(Q\sqrt{n\logn})\)的做法,成功跳过正解。结果考后发现普通分块就可以\(O(Q\sqrtn)\)。而且似乎还WA了一些点。根据题意可以发现\(b_i\)为\(1\)当且仅当\(i\)在二进制下有奇数个\(1\)。这个可以用来快速求\(b_i\)。再观察性质,发现\(......
  • 树上启发式合并学习笔记
    树上启发式合并\((dsu\on\tree)\)适用条件:可以在一个子树内统计的问题,并且不带修改。暴力复杂度一般为\(O(n^2)\)。例题:CF600ELomsatgelral解法考虑一个问题,给你一棵树,每个节点有一个颜色,如果一种颜色在以\(x\)为根的子树内出现次数最多,则称\(col_i\)占主要色。......
  • 【学习笔记】【数学】概率与期望
    前言如果不小心发表出去了那么大概率是我手滑点错了,没有更新完那就是我也在学,有问题请@我。另外有同学告诉我概率期望其实是动态规划?基础知识:互斥事件:事件\(A\)和\(B\)的交集为空,\(A\)与\(B\)就是互斥事件,也叫互不相容事件。也可叙述为:不可能同时发生的事件。如\(A......
  • 7.20 图论笔记
    T1题目•在\(N\)个点\(P\)条边的加权无向图上求出一条从\(1\)号结点到\(N\)号结点的路径,使路径上第\(K+1\)大的边权尽量小。•\(0≤K<N≤1000\),\(1≤P≤2000\)。Solution•一道自己做出来的蓝。•二分第\(K+1\)大边权为\(mid\),每次把边权......
  • 集训总结(经常鸽)
    7.13今天上午主要是把cdq和treap复习了一下,顺便写了两个博客来记录。下午一直在学斜率优化,先是学了单调队列优化,写了 【P4954[USACO09OPEN]TowerofHayG】【P2254[NOI2005]瑰丽华尔兹】然后就开始学斜率优化,学完之后写了【P3628[APIO2010]特别行动队】这道题真正......
  • Mybatis笔记
    如何获得Mybatis?maven仓库:<!--https://mvnrepository.com/artifact/org.mybatis/mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></depende......
  • 行业追踪,2023-07-21,减速器已经破位了,割肉了,得个教训,总结下
    自动复盘2023-07-21凡所有相,皆是虚妄。若见诸相非相,即见如来。k线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让市场来告诉你跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行......
  • linux系统编程学习笔记
    IO当系统调用io与标准io都能完成相同功能时,优先使用标准io因为不同操作系统提供的系统调用不同,但标准io是之上的封装,不会随着系统的不同改变另外标准io可以合并系统调用,加速如标准io如fopen,在linux下依赖open,在windows下依赖openfile标准IO与系统IO区别一个吞吐量大(即先缓存......