POJ 1737 Connected Graph 递推
2015-02-05 10:57
489 查看
题目大意:求n个点能组成多少种无向连通图
多年的老心病终于干掉了- -
令f[i]表示i个点能组成多少种无向图
首先易知我们能生成2^(i*(i-1)/2)种图 但是一些是不合法的 我们要将不合法的干掉
枚举1号节点与多少个点连通
设1号节点所在联通块大小为j(1<=j<=i-1)
那么与1相连的其它点有C(i-1,j-1)中选法,1号节点所在联通块有f[j]种连法,不与1号节点相连的点有2^((i-j)*(i-j-1)/2)种连法
故得到递推式f[i]=2^(i*(i-1)/2)-Σ[1<=j<=i-1]C(i-1,j-1)*f[j]*2^((i-j)*(i-j-1)/2)
多年的老心病终于干掉了- -
令f[i]表示i个点能组成多少种无向图
首先易知我们能生成2^(i*(i-1)/2)种图 但是一些是不合法的 我们要将不合法的干掉
枚举1号节点与多少个点连通
设1号节点所在联通块大小为j(1<=j<=i-1)
那么与1相连的其它点有C(i-1,j-1)中选法,1号节点所在联通块有f[j]种连法,不与1号节点相连的点有2^((i-j)*(i-j-1)/2)种连法
故得到递推式f[i]=2^(i*(i-1)/2)-Σ[1<=j<=i-1]C(i-1,j-1)*f[j]*2^((i-j)*(i-j-1)/2)
w = open("out.out", "w") f = [0] * 60 C = [[0] * 60 for i in range(60)] for i in range(0,51): C[i][0] = 1 for j in range(1,i+1): C[i][j] = C[i-1][j] + C[i-1][j-1] for i in range(1,51): f[i] = 2**(i*(i-1)//2) for j in range(1,i): f[i] -= C[i-1][j-1] * (2**((i-j)*(i-j-1)/2)) * f[j] w.write("\"%d\",\n" %f[i] )
相关文章推荐
- POJ 1737 Connected Graph(JAVA+递推)
- POJ 1737 Connected Graph 高进度+递推
- poj 1737 Connected Graph 组合递推计数+高精度
- poj 1737 Connected Graph - 容斥原理 - 动态规划
- POJ 1737 Connected Graph 题解(未完成)
- POJ 1737 Connected Graph 题解(未完成)
- 【POJ 1737】Connected Graph
- POJ 1737: Connected Graph 组合数学 高精度
- POJ 1737 Connected Graph(组合)
- poj 1737 Connected Graph
- poj1737 Connected Graph(组合数学)
- poj-1737 Connected Graph[转] ***
- POJ 1737 Connected Graph
- poj 1737 递推
- PKU1737 解题报告 Connected Graph __高精度加法,乘法,减法,组合数
- 【Java】【高精度】【组合数】【递推】poj1737 Connected Graph
- poj Connected Graph
- poj1737 Connected Graph(计数,组合数学,递推,高精)
- POJ - 2506 Tiling (递推+高精度运算)@
- POJ 1205 Water Treatment Plants(递推)