摘要: 题意:有m到题,t个队伍,给出第 i 支队作出 第 j 道题的概率 Pij。求每个队至少作出一道题,作出最多的那个队伍至少作出 n 道题的概率。 dp[i][j][k]表示第 i 支队前 j 道题作出 k 道的概率,dp[i][j][k] = dp[i][j-1][k]*(1-p[i][j])+dp[i][j-1][k-1]*p[i][j]. s[i][k]表示第 i 支队作出题目个数 0~k 的概率。 s[i][k]=dp[i][m][0]+dp[i][m][1]+...+dp[i][m][k]. s[i][m]-s[i][0]表示第 i 支队至少作出一道题的概率,s[i][n-... 阅读全文
posted @ 2013-08-10 22:43 yongren1zu 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题意:一个人若连续进k1个球或连续不进k2个球,游戏结束,给出这个人进球的概率p,求到游戏结束时这个投球个数的期望。 进球概率为p,不进概率 q=1-p 设 f[i] 表示连续 i 次不进距离连续k2次不进结束的期望,t[i]表示连续 i 次进球,距离连续k1次进球结束的期望。显然,f[k2]=p[k1]=0; f[i] = q*(f[i+1]+1)+p*(1+t[1]) , t[i] = p*(t[i+1]+1)+q*(1+f[1]). 答案是 p*t[1]+q*f[1]+1. 然后就算t[1],f[1]去吧~~数学不好的人伤不起啊#include#includeint mai... 阅读全文
posted @ 2013-08-10 22:32 yongren1zu 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 负二项分布:又称帕斯卡分布。 它表示,已知一个事件在伯努利试验中每次的出现概率是p,在一连串伯努利试验中,一件事件刚好在第r+k次实验中出现第r次的概率。 题意:有两罐糖果,初始化每罐有n个糖果,每次取第一罐糖果的概率是p,则另一罐是1-p,求当打开一罐发现为空时,另一罐糖果数目的期望。 直接计算会向下溢出。#include#includeint n;double p,q;double f[400005];double logC(int m,int n){ return f[m]-f[n]-f[m-n];}int main(){ int cas=1; f[0]=0;... 阅读全文
posted @ 2013-08-10 16:39 yongren1zu 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个骰子,求n个骰子的和不小于x的概率。 刚开始想每给一组数就计算一次~~太笨了- -,看了别人的代码,用dp,而且是一次就初始化完成,每次取对应的数据就行了。WA了好多次啊,首先不明白的就是:for(int i=1;i=0;j--) dp[i][j]+=dp[i][j+1]; 这段代码不清楚干什么用的,想清楚没? 刚开始求的dp[i][j]表示的是前 i 个骰子掷出总和为 j 的概率 ,题意让求总和不小于 j 的概率,所以把大于 j 的要加上。 然后输出的又WA了好几次~~ 有概率为0和1的情况,就不能输出分数形式。#include#include#define N ... 阅读全文
posted @ 2013-08-10 14:47 yongren1zu 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 题意:一个长为n+1的格子,初始位置在0,记为i,每掷一次骰子得到一个数j,位置移动到i+j,当位置(i+j)>=n时游戏结束,问掷骰子次数的数学期望。 a[i] 表示从位置 i 到游戏结束的次数的期望,因为有飞机~~, fly[i]=j,表示 i 飞到 j 。 a[n]=0,然后倒着计算,最后答案是a[0].#include#include#define maxn 100010double a[maxn];int fly[maxn];int main(){ int n,m; int x,y; while(scanf("%d%d",&n,&m) &am 阅读全文
posted @ 2013-08-10 13:41 yongren1zu 阅读(129) 评论(0) 推荐(0) 编辑