2024 年春节集训 _ 第一课 - 期望类型动态规划

可能会用到的记号: \([P]=\begin{cases} 1 &(P 成立) \\ 0 & (P 不成立) \end{cases}\)

期望概率 \(\texttt{dp}\)

\(\texttt{dp}\) 的变形当中最为简单易懂但是又思路又最为清奇。

与之相关的难题数不胜数。考场上可以想出正解的都是超级神仙。

粗浅的提一句,离散变量,也就是保证样本可数的情况下的变量。而后文的随机变量,大都是离散型随机变量。

相关定义:

我们可以用数学的方法理解他们。

可数:像自然数一样可以一个一个计数的。

因为我并没有太好的概率相关的基础学习,所以我只能这样:

概率,期望与频数直方图

对于一个变量,它在有限个样本当中出现。而现在已知这个样本。

作频数直方图。而概率 \(P\) 也就是 \(\dfrac{S}{C}\) ( 其中 \(S\) 表示样本容量,\(C\) 表示该种取值出现的次数 )。不难发现,概率 \(P\) 也即这个随机变量的取值出现频率。

记这个随机变量为 \(X\),它的取值分别为 \(X_1,X_2,\cdots,X_i,\cdots,X_n.\) 而我们记 \(E(X)\)\(X\) 的数学期望。

期望,简单地说是随机变量 \(X\) 的所有取值的平均值。求平均数可以用整个频数直方图求和然后除以他的样本容量得到。也就是:

\[E(X)=\dfrac{\sum_{i=1}^n X_iC_i}{\sum C_i} \]

稍微用上文的公式化简,就可以得到书上最后的公式:

\[E(X)=\sum _{i=1} ^n X_i P(X=X_i) \]

如果这个随机变量的取值非有限但是可数,那么

\[E(X)=\sum_{i=1}^{\infty} X_iP(X=X_i) \]

这里, \(P(X=X_i)\)\(X\) 取到 \(X_i\) 的概率。

我怎么好像说了一大堆废话啊。。

可以想象,\(E(X)\)\(X\) 的随机取值组成的集合的平均值。

但是这里通常不会讨论随机变量取值可数的情况。

重要性质

有常数 \(c\),随机变量 \(X,Y\)

  1. \(E(c)=c.\)

  2. 数学期望的线性性质: \(E(cX)=cE(X).\)

  3. 数学期望的线性性质: \(E(X+Y)=E(X)+E(Y)\)

  4. 数学期望对于乘法的准分配律:当 \(X,Y\) 相互独立, \(E(XY)=E(X)E(Y)\)

什么是相互独立呢?

\(X,Y\) 的取值集合分别为 \(\{X_i\}\) 以及 \(\{Y_i\}\) ,而对于任意 \(i,j\),有 \(P(X=X_i,,Y=Y_j)=P(X=X_i)P(Y=Y_j)\)

  1. 全期望公式:

\[E(X)=\sum_{y=I(Y)} E(X|Y=y) \cdot P(Y=y) \]

其中,\(I(Y)\)\(Y\) 的取值集合,而 \(E(X|Y=y)\) 表示 \(Y=y\) 的情况下 \(X\) 的期望取值。

数学期望是一个所有实验结果的平均值

逆天的是,这里面并没有基本性质,每一个都可以得到证明。

再给出一个基于本质可以被理解的性质:

\[P(A)=\sum_{i} P(A|B_i)P(B_i) \]

这个性质被称作 \(*\) 全概率公式 \(*\)

其中 \(A|Bi\)\(B_i\) 事件成立时 \(A\) 事件成立的概率。

有一个易错点:\(E(X^2)=E^2(X)\) 不一定成立。

期望概率 \(dp\) 例题。

【例题 1】期望分数

\(link\)

设在 \(i\) 的得分是 \(x\) ,有 \(x_i\) 个连续的 \(1.\)

\[E(i)=p_i[(x_i+1)-x_i^3]+(1-p_i)E(0)+E(i-1) \]

多项式乘法化简,最后得到

\[E(i-1)+p_i[3x_i^2+3x_i+1] \]

问题转移到 \(E^2(x_i)\) 以及 \(E(x_i)\)

\[E^2(x_i)=p_iE(x_{i-1}+1)^2+(1-p_i)E(0)=p_i[E^2(x_{i-1})+2E(x_{i-1})+1] \]

\[E(x_i)=p_i[E(x_i-1)+1] \]

code
#include <bits/stdc++.h>
#define ll long long
#define db double
const int N=1e5+10;
db E[N],Ex[N],Ex2[N],p[N];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;++i) scanf("%lf",&p[i]);
	for(int i=1;i<=n;++i){
		Ex[i]=p[i]*(Ex[i-1]+1);
		Ex2[i]=p[i]*(Ex2[i-1]+2*Ex[i-1]+1);
		E[i]=E[i-1]+p[i]*(3*Ex2[i-1]+3*Ex[i-1]+1);
	}
	printf("%.1lf\n",E[n]);
}
posted @ 2024-02-05 23:05  q(x)  阅读(9)  评论(0编辑  收藏  举报