摘要: http://www.codeforces.com/problemset/problem/148/D题意:一个袋子里面装有n个小白鼠,m个小黑鼠,A,B两人轮流从中取老鼠,A先取,规定谁先取到白色小鼠谁就赢。B比较特殊,每当他取完一只老鼠时,总是会惊动其他的老鼠,所以取完之后剩下的老鼠会从袋子中溜掉一只。 而对于A取完后不会存在这种情况。问A取胜的概率。思路:首先我想了一个4维的dp[i][j][k][2] i表示到了第几步(这里可以用滚动数组优化,然后就可以存了) j表示还剩下白鼠j只,k表示还剩下黑鼠k只,最后一维: 0 表示取白鼠,1表示取黑鼠,状态转移就很好想了,就是分取白鼠还是取黑鼠 阅读全文
posted @ 2013-04-30 21:38 E_star 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 主要用来当求C(n,m)%p; 这里的n,m很大,不能用数组表示,而p可以用数组表示时。hdu: 3037Saving Beans题意:模型是有m + 1个球(0,1,2.....m),放到n个盒子里面,问有多少种方法。 典型的球同,盒不同,不允许空箱 C(n + m + 1 - 1,m + 1 - 1);思路:因为这里n,m太大,无法直接求,所以利用Lucas(n,m,p) = C(n%p,m%p)*Lucas(n/p,m/p,p)来求。View Code //#pragma comment(linker,"/STACK:327680000,327680000")#inc 阅读全文
posted @ 2013-04-30 11:47 E_star 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 首先给出这个Lucas定理:A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])modp同余即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)证明:表示没看懂。。Lucas定理的一个证明(找的)无意中看到这么一个定理,wiki上的证明我是看不懂了...http://en.wikipedia.org/wiki/Lucas%27_theorem友情提示:上wiki,先FQ- -|| 阅读全文
posted @ 2013-04-30 11:41 E_star 阅读(364) 评论(2) 推荐(0) 编辑