概率和数学期望基础题
2013-08-13 00:22
295 查看
uva 11021 Tribbles
每只麻球都是独立的,所以先单独考虑一只麻球的繁殖情况,设f(i)表示i天之后全部死亡的概率,f(i)=p0+p1*f(i-1)+p2*f(i-1)^2+....p(n-1)*f(i-1)^(n-1) 分别表示:一只,一只也没出生的概率,一只自然死亡;出生两只,一只自然死亡,剩下i-1天全部死完的概率f(i-1)^2 ;.......;出生n-1只,一只自然死亡,剩下的i-1天内死完,f(i-1)^(n-1) ...
uva 11722 Joining with Friend
转化成数学问题就是求,直线y=x+w和直线y=x-w在矩形内切出图形面积占矩形面积的比例。
先求一条直线在矩形中切得下半部分的面积(主要四种情况),另外一个同样的,面积一减,即为所求
uva 11427 Expect the Expected
uva 11762 Race to 1
每只麻球都是独立的,所以先单独考虑一只麻球的繁殖情况,设f(i)表示i天之后全部死亡的概率,f(i)=p0+p1*f(i-1)+p2*f(i-1)^2+....p(n-1)*f(i-1)^(n-1) 分别表示:一只,一只也没出生的概率,一只自然死亡;出生两只,一只自然死亡,剩下i-1天全部死完的概率f(i-1)^2 ;.......;出生n-1只,一只自然死亡,剩下的i-1天内死完,f(i-1)^(n-1) ...
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> using namespace std; const int maxn=1010; double p[maxn],f[maxn]; int n,k,m; int main() { int cas=0; int t; scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&k,&m); for(int i=0;i<n;i++) scanf("%lf",&p[i]); f[0]=0; f[1]=p[0];//一个也没生出 for(int i=2;i<=m;i++) { f[i]=0; double cnt=1; for(int j=0;j<n;j++) { f[i]+=p[j]*cnt; cnt*=f[i-1]; } } printf("Case #%d: %.7lf\n",++cas,pow(f[m],k)); } return 0; }
uva 11722 Joining with Friend
转化成数学问题就是求,直线y=x+w和直线y=x-w在矩形内切出图形面积占矩形面积的比例。
先求一条直线在矩形中切得下半部分的面积(主要四种情况),另外一个同样的,面积一减,即为所求
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> using namespace std; double t1,t2,s1,s2,w; double area(double b) // 求y=x+b下方在矩形中截取的面积 { double s=(t2-t1)*(s2-s1); double x1=t1,y1=t1+b; double x2=t2,y2=t2+b; if(y2<=s1) // 直线交于矩形右下顶点或者以下 return 0; if(y1<=s1) // 直线交于矩形下面边 { if(y2<=s2) // 直线交于矩形右面边 return 0.5*(y2-s1)*(t2-(s1-b)); else // 直线交于矩形上面边 return 0.5*(t2-s1+b+t2-s2+b)*(s2-s1); } else if(y1<s2) // 直线交于矩形左面边 { if(y2<=s2) //直线交于矩形右面边 return 0.5*(t1+b-s1+t2+b-s1)*(t2-t1); else // 直线交于矩形上面边 return s-0.5*(s2-t1-b)*(s2-t1-b); } else return s; } int main() { int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { scanf("%lf%lf%lf%lf%lf",&t1,&t2,&s1,&s2,&w); double ans=area(w)-area(-w); ans/=(s2-s1)*(t2-t1); printf("Case #%d: %.8lf\n",cas,ans); } return 0; }
uva 11427 Expect the Expected
// 输出平均情况下玩游戏的晚上个数 // 就是求玩了多少次就不玩了(期望) // 就是玩一次就不想玩了(概率)... 转换:1/ans // 一晚上就不想玩了:没赢,赢一局,赢两局。。。赢i局 // 设dp[i][j]表示玩i局赢j局,总获胜比例小于等于p // 一局都没赢不想玩的概率 dp [0]; // 赢了一局不想玩的概率 dp [1]; // ..... // 一晚上就不想继续玩的概率 dp [0]+dp [1]+dp [2]+.... // dp的方程是:dp[i][j]=dp[i-1][j-1]*p+dp[i-1][j]*(1-p); #include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> using namespace std; double dp[105][105]; int main() { int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { int a,b,n; scanf("%d/%d%d",&a,&b,&n); double p=1.0*a/b; memset(dp,0,sizeof(dp)); dp[0][0]=1.0; for(int i=1;i<=n;i++) { for(int j=0;j*b<=a*i;j++) { if(j==0) dp[i][j]=dp[i-1][j]*(1-p); else dp[i][j]=dp[i-1][j]*(1-p)+dp[i-1][j-1]*p; } } double ans=0; for(int i=0;i*b<=a*n;i++) ans+=dp [i]; printf("Case #%d: %d\n",cas,(int)(1/ans)); } return 0; }
uva 11762 Race to 1
/* 根据全概率公式知: dp(x)= 1 第一次转移 + dp(x)*(1-g(x)/p(x)) 出现一个不能整除的素因子 + sum(dp(x/y)/p(x)) 恰好整除的某个素因子 记忆化搜索保存已经计算过的dp(x) */ #include <cstdio> #include <iostream> #include <cmath> #include <cstring> #include <algorithm> #include <vector> using namespace std; #define maxn 1000010 bool vis[maxn]; bool cnt[maxn]; vector<int>prime; int n; double ans[maxn]; void Prime() { memset(vis,true,sizeof(vis)); vis[0]=0,vis[1]=0; for(int i=2;i<maxn;i++) if(vis[i]) { prime.push_back(i); for(int j=2*i;j<maxn;j+=i) vis[j]=0; } //cout<<prime.size()<<":"<<prime[prime.size()-1]<<endl; } double dp(int x) { if(x==1) return 0; if(cnt[x]) return ans[x]; cnt[x]=1; double tmp=0; int xx=x; int g=0,p=0;//p表示素因子个数,g表示p中能整除x的个数 for(int i=0;i<prime.size()&&prime[i]<=x;i++) { p++; if(x%prime[i]==0) { g++; tmp+=dp(x/prime[i]); } } tmp=(tmp+p)/g; ans[xx]=tmp; return tmp; } int main() { Prime(); int t; memset(cnt,0,sizeof(cnt)); memset(ans,0,sizeof(ans)); scanf("%d",&t); for(int cas=1;cas<=t;cas++) { scanf("%d",&n); printf("Case %d: %.10lf\n",cas,dp(n)); } return 0; }
相关文章推荐
- 概率与数学期望
- lightoj1079(数学概率与期望)
- HDU 4438 概率 多个情况下的数学期望
- 机器学习之数学基础——期望、方差、协方差、相关系数、矩、协方差矩阵
- 数学期望和概率DP题目泛做(为了对应AD的课件)
- 机器学习数学|概率论基础常见概型分布期望与方差
- Codeforces 28C Bath Queue - 动态规划 - 组合数学 - 概率与期望
- HDU 4405 Aeroplane chess(概率dp,数学期望)
- 借助树的概率dp(期望)+数学-好题-hdu-4035-Maze
- lightoj1274(数学概率与期望)
- 数学基础之概率
- 概率统计:数学期望、方差、协方差、相关系数、矩
- 【ML学习笔记】2:机器学习中的数学基础2(琴生不等式,概率公式,统计量)
- POJ2096Collecting Bugs(数学期望,概率DP)
- [BZOJ4775][点分树][概率与期望][数学][卡精度]网管
- HDU 5245 Joyful (数学概率求期望)
- SGU495Kids and Prizes(数学期望||概率DP||公式)
- 非连续性概率分布的概率密度(有间断点时如何求数学期望)
- lightoj 1030 lightoj 1038 基础概率dp 期望
- 概率 数学期望 HDU - 5245