ZOJ 3380 Patchouli's Spell Cards 概率DP
来源:互联网 发布:linux 中文时间格式 编辑:程序博客网 时间:2024/05/22 11:51
题意:给你m个位置,每个位置放一个数,区间为1~n,问你至少有L个位置是一样的数的概率,结果用分数表示
思路:这题我们从反向入手,dp[i][j]代表前i个数,放到j个位置,且没有L个或以上的位置有相同的组合情况,最后用n^m减去即可
这道题要用大数,正好这两天在乱搞python。。。也算是自己用python过的第一道题~
import sysC = [([0] * 110) for i in range(110)]for i in range(101): C[i][0] = C[i][i] = 1 for j in range(1, i): C[i][j] = C[i-1][j] + C[i-1][j-1]def GCD(a, b): return a if not b else GCD(b, a % b)while True: try: m, n, l = map(int, sys.stdin.readline().split()) if(l > m): print('mukyu~') continue dp = [([0] * 110) for i in range(110)] dp[0][0] = 1 for i in range(1, n+1): for j in range(1, m+1): for k in range(0, min(j+1, l)): dp[i][j] += dp[i-1][j-k] * C[m-(j-k)][k] Sum = pow(n, m) ans = 0 for i in range(1, n+1): ans += dp[i][m] ans = Sum - ans; gcd = GCD(ans, Sum) print str(ans / gcd) + '/' + str(Sum / gcd) except: break
0 0
- ZOJ 3380 Patchouli's Spell Cards (概率dp)
- ZOJ 3380 Patchouli's Spell Cards 概率DP
- Zoj 3380 Patchouli's Spell Cards (概率dp)
- ZOJ 3380 Patchouli's Spell Cards( 概率DP)
- ZOJ 3380 Patchouli's Spell Cards 概率DP
- ZOJ 3380 Patchouli's Spell Cards(概率DP)
- ZOJ-3380 Patchouli's Spell Cards(概率DP&&大数)
- ZOJ 3380 Patchouli's Spell Cards [基础概率DP+大数]
- ZOJ 3380 Patchouli's Spell Cards(概率DP)
- ZOJ 3380 Patchouli's Spell Cards(DP,大数)
- ZOJ 3380 Patchouli's Spell Cards [基础DP+大数]
- ZOJ3380- Patchouli's Spell Cards(概率DP+计数)
- zoj3380 Patchouli's Spell Cards
- ★ZOJ 3380 Patchouli's Spell Cards 详细题解 (递推+组合数求方案数)
- BNU Cards 概率dp
- zoj 3582 概率dp
- zoj 3299 概率dp
- ZOJ 3822 概率DP
- java中的堆和栈
- 从上往下打印二叉树
- 自定义注解理解梳理
- 关于十六进制、asc码
- Xcode7 使用NSURLSession发送HTTP请求的问题
- ZOJ 3380 Patchouli's Spell Cards 概率DP
- Linux常用命令
- JavaSE IO流 File文件操作基础知识
- HTTPS概述
- LintCode(158)
- 判断处理器是Big_endian的还是Little——endian的
- android ndk Using Prebuilt Libraries
- hdu 2955 Robberies
- 使用APKTOOL 反编译APK 失败的解决方法