上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 30 下一页
摘要: 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 (概率为ei) 3.和该点相连有m条边,随机走一条 求:走出迷宫所要走的边数的期望值。思路: 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望。E[1]即为所求。 叶子结点:有3种情况:kill;exit(成功出去的期望为0) ;回到父节点。 E[i] = ki*E[1] + ei*0 + (1-ki-ei)*(E[father[i]] + 1); = ki*E[1] + (1-ki-ei)*E[fath. 阅读全文
posted @ 2013-08-08 16:53 _随心所欲_ 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 思路:分析题意,可以得到如下递推关系:dp[i][j]表示i个人排队,Tomato在j位置的概率j=1 时,dp[i][j] = p1*dp[i][j]+p2*dp[i][i]+p4;2 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 200511 using namespace std;12 double dp[MAX][MAX],c[MAX];13 int main(){14 int... 阅读全文
posted @ 2013-08-08 11:11 _随心所欲_ 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 思路:简单的概率DPdp[i]表示从i到n的期望步数:当i没有飞机时dp[i]=∑p[k]*p[i+k]+1;当i有飞机时dp[i]=dp[fly[i]].代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 10000511 using namespace std;12 double p[MAX];13 int fly[MAX];14 int main(){15 . 阅读全文
posted @ 2013-08-07 22:09 _随心所欲_ 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 思路:这题的递推方程有点麻烦!!dp[i]表示分数为i的期望步数,p[k]表示得分为k的概率,p0表示回到0的概率:dp[i]=Σ(p[k]*dp[i+k])+dp[0]*p0+1设dp[i]=A[i]*dp[0]+B[i]带入的:dp[i]=∑(pk*A[i+k]*dp[0]+pk*B[i+k])+dp[0]*p0+1 =(∑(pk*A[i+k])+p0)dp[0]+∑(pk*B[i+k])+1; 明显A[i]=(∑(pk*A[i+k])+p0) B[i]=∑(pk*B[i+k])+1 先递推求得A[0]和B[0]. 那么 dp[0]=B[0]/(1-A[0]);链接:http://acm. 阅读全文
posted @ 2013-08-07 21:02 _随心所欲_ 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 思路:仔细读懂题意。dp[i][j]表示第i个bug,第j个子系统;那么状态转移就有4种可能:dp[i][j],概率是p1=i/n*j/s;dp[i+1][j],概率是p2=(n-i)/n*j/s;dp[i][j+1],概率是p3=i/n*(s-j)/s;dp[i+1][j+1],概率是p4=(n-i)/n*(s-j)/s;那么就有:dp[i][j]=p1*(dp[i][j]+1)+p2*(dp[i+1][j]+1)+p3*(dp[i][j+1]+1)+p4*(dp[i+1][j+1]+1) //注意这里加1是因为本次操作花费一天=p1*dp[i][j]+p2*dp[i+1][j]+p3*dp 阅读全文
posted @ 2013-08-07 19:51 _随心所欲_ 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 容易推出递推关系f[n]=p*f[n-1]+(1-p)*f[n-2];可以通过矩阵快速幂求得第n步的概率。对于给出的点an[1],an[2]……可以分段求出:1~an[1];an[1]+1~an[2];……这样算出到达雷点的概率,然后用1减去就是成功通过雷点的概率,最后运用将每段成功通过的概率相乘即可!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 10000 阅读全文
posted @ 2013-08-07 15:37 _随心所欲_ 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 思路:五边形数定理!!!五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性。欧拉函数的展开式如下:亦即欧拉函数展开后,有些次方项被消去,只留下次方项为1, 2, 5, 7, 12, ...的项次,留下来的次方恰为广义五边形数。若将上式视为幂级数,其收敛半径为1,不过若只是当作形式幂级数(formal power series)来考虑,就不会考虑其收敛半径。欧拉函数的倒数是分割函数的母函数,亦即:其中为k的分割函数。上式配合五边形数定理,可以得到考虑项的系数,在 n>0 时,等式右侧的系数均为0,比较等式二侧的系数,可得因此可得到分割函数p(n)的递归式以n=10为例这就是所 阅读全文
posted @ 2013-08-07 09:42 _随心所欲_ 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 刚开始我也不知道怎么做,后来慢慢就推出来了……对于样例2 1 0,结果是2/32 2 0,结果是4/53 2 0,结果是6/73 2 1,结果是9/14=6/7*3/4……之后就会发现每一项都是d/(d+1);而d又是怎样来的呢?上面的d分别是2*1;2*2;3*2,3*1……所以规律就出来,哈哈……看代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int main() 8 { 9 int t,n,p,k,i;10 double ans;11 cin>... 阅读全文
posted @ 2013-08-06 20:10 _随心所欲_ 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 思路:1表示竖着的下半部分,0表示其他情况。dp[i][j]表示第i行第j种状态满足的数目。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 1211 using namespace std;12 ll dp[MAX][(1>=1;//右移25 }26 if(w%2==0) return 0;//如果是偶数,表示不满足27 ... 阅读全文
posted @ 2013-08-06 16:13 _随心所欲_ 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 没什么好说的……#includeint main(){ int n; while(scanf("%d",&n)){ if(n==-1) break; printf("I bet on Oregon Maple~\n"); } return 0;}View Code 阅读全文
posted @ 2013-08-06 10:48 _随心所欲_ 阅读(152) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 30 下一页