
概率DP
文章平均质量分 72
ehi11
这个作者很懒,什么都没留下…
展开
-
hdu football 概率DP
/* 首先.dp的思路是dp[i][j].表示必到第i场的时候j还留在在场,即第i场比赛的时候j胜了.他的转移条件是i-1场j也胜了,而且i-1场还有另一支队伍k也胜了,且这两支队伍在第i场的时候相遇了,而此时j胜了k.所以.转移的方程可以写成dp[i][j]=dp[i-1][j]*dp[i-1][k]*p[i][k].而如何确定k成了现在的问题.经过计算,从高往低记为1,2,3,....n+1.原创 2012-08-07 21:58:44 · 527 阅读 · 0 评论 -
hdu 3835 概率DP
#include #include #define maxn 1010 double p[maxn][maxn][4]; double dp[maxn][maxn]; using namespace std; int main() { int r,c; while(scanf("%d%d",&r,&c)==2) { for(int i=1; i<=r;原创 2012-08-07 22:03:22 · 693 阅读 · 0 评论 -
poj 2096 马克科夫链
/*重点是理解dp数组的含义。 Poj 的collect bugs.题意就是给n种bug和s个子系统.发现一个bug需要一天的时间.求期望的天数. 主要是dp[i][j]的构造.它表示当前已经在j个子系统内发现n个bug,里最后结果还相差的期望天数.一次推出四个转移方程.如dp[i+1][j]表示新发现了一种bug.则对应的概率为(n-i)*j/(n*s*1.0).表示在还剩n-i的bug里除以总原创 2012-08-07 22:09:07 · 1036 阅读 · 0 评论 -
ssworld VS DDD hdu 概率DP
#include //注意题意,是从第一个人先胜的常熟的=第二个人的hp时,才赢.所以n和m应该反过来枚举 #include #define maxn 2001 double dp[maxn][maxn]; double a[6]; double b[6]; int main() { int n,m; while(scanf("%d%d",&n,&m)==2) {原创 2012-08-07 22:10:27 · 865 阅读 · 0 评论 -
Birds in woods 概率DP
/*dp[i][j]表示前i个小时中有j只鸟被标记。 f[i]表示当前状态离最后的状态的期望天数。 类似马尔科夫链的问题。要好好总结。 p=(n-i)/n。i:0-->l。循环一遍。求sum(1/p)。*/ #include #include double dp[110][210]; double f[210]; int main() { int t,n,m,k,l; sca原创 2012-08-12 10:01:00 · 739 阅读 · 0 评论