概率与数学期望笔记
概率论
样本点:一个随机试验的某种可能的结果。
样本空间
随机事件
随机变量
我们称
- 对于两两互斥的事件
有
数学期望
简而言之:它是概率和随机变量取值乘积之和。
若随机变量
例如投掷
样本空间:共有
随机变量,取值范围为
两个骰子掷出的点数的数学期望为
数学期望的线性
满足
因此可以对数学期望进行递推求解
用随机变量
例题1 T313040 来到人生的米字路口。
设
已知
注意图要从终点到起点求拓扑排序,即在反图上执行。
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int INF=0x3f3f3f3f; int n,m,in[100009],res[100009]; double ans[100009]; vector<int> to[100009]; vector<ll> dis[100009]; queue<int> q; int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ int u,v,w; cin>>u>>v>>w; to[v].push_back(u); dis[v].push_back(w); in[u]++,res[u]++; } for(int i=1;i<=n;i++){ if(!in[i]) q.push(i); } while(!q.empty()){ int fnt=q.front(); q.pop(); for(int i=0;i<to[fnt].size();i++){ int y=to[fnt][i]; ans[y]+=(ans[fnt]+dis[fnt][i])*1.0/in[y]; res[y]--; if(res[y]==0) q.push(y); } } cout<<fixed<<setprecision(2)<<ans[1]<<endl; return 0; }
例题2 弥留之国的Alice。
DAG,有明确的起点和任意终点(并不唯一,小王和大王可以代替某花色)
状态
当前已经翻开的牌数为
然后,翻开
考虑小王大王的情况:
当
整体来看,状态转移是四种颜色的期望加上大小王的期望。
$\frac{1}{54-sum} \times min_{0 \leq x' \leq 3} fa,b,c,d,x',y + $
终点时,翻开牌数达到了要求,期望值为
把在终点时,记为初始状态
把在起点时,记为目标状态:
AC代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll INF=0x3f3f3f3f; int A,B,C,D; double f[29][29][29][29][5][5]; double dp(int a,int b,int c,int d,int x,int y){ if(f[a][b][c][d][x][y]) return f[a][b][c][d][x][y]; int as=a+(x==0)+(y==0); int bs=b+(x==1)+(y==1); int cs=c+(x==2)+(y==2); int ds=d+(x==3)+(y==3); if(as>=A&&bs>=B&&cs>=C&&ds>=D) return 0; int w=54-(as+bs+cs+ds); double v=0; if(a<13) v+=(13.0-a)*1.0/w*(dp(a+1,b,c,d,x,y)+1); if(b<13) v+=(13.0-b)*1.0/w*(dp(a,b+1,c,d,x,y)+1); if(c<13) v+=(13.0-c)*1.0/w*(dp(a,b,c+1,d,x,y)+1); if(d<13) v+=(13.0-d)*1.0/w*(dp(a,b,c,d+1,x,y)+1); if(x==4){ double tnp=INF; for(int i=0;i<=3;i++){ tnp=min(tnp,1.0/w*(dp(a,b,c,d,i,y)+1)); } v+=tnp; } if(y==4){ double tnp=INF; for(int i=0;i<=3;i++){ tnp=min(tnp,1.0/w*(dp(a,b,c,d,x,i)+1)); } v+=tnp; } return f[a][b][c][d][x][y]=v; } int main(){ cin>>A>>B>>C>>D; if(max(0,A-13)+max(0,B-13)+max(0,C-13)+max(0,D-13)>2){ cout<<"-1.000"; return 0; } double ans=dp(0,0,0,0,4,4); cout<<fixed<<setprecision(3)<<ans; return 0; }
例题3 T313075 密码破译。
把
根据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具