Uva 10247 (组合计数)
来源:互联网 发布:达内和尚观linux哪个好 编辑:程序博客网 时间:2024/05/29 16:55
题目:
有一颗 K 叉完全树, 深度 D,有 N 个节点, 给你 [1 - N] 给这颗树的节点标号。
父节点 要比所有子节点的标号小。 问有多少种标号方法。
分析:
题目的标号是不允许重复的。所以根节点的表示是最小的。
对于一颗 K 叉 D 深度的树, 其节点数为
然后就会剩下 N-1 个标号, 就相当于把 N-1个数分为 K 组, 每组
对于这些分配方案就有
每颗子树的标号方案是互不影响的, 所以有答案:
Code:
import java.math.*;import java.util.*;public class Main { public static int[][] N = new int[25][25]; public static BigInteger[][] Ans = new BigInteger[25][25]; public static BigInteger C(int m, int n) { if(n > m) return BigInteger.ZERO; if(n > (m-n)) return C(m,m-n); BigInteger ans = BigInteger.ONE; //System.out.println(n); for(int i = 0; i < n; ++i) { ans = ans.multiply(BigInteger.valueOf((long)(m-i))).divide(BigInteger.valueOf((long)(i+1))); } return ans; } public static void INIT() { for(int i = 1; i < 25; ++i) { int tmp = 1; N[i][0] = 1; for(int j = 1; j < 25; ++j) { tmp = tmp * i; N[i][j] = N[i][j-1] + tmp; } } } public static void GetAns() { for(int i = 1; i < 25; ++i) { Ans[i][0] = BigInteger.ONE; for(int j = 1; i*j < 25; ++j) { Ans[i][j] = BigInteger.ONE; int n = N[i][j-1]; int m = N[i][j]; for(int k = 0; k < i; ++k) { Ans[i][j] = Ans[i][j].multiply(Ans[i][j-1]); if(m-1-k*n >= n) { Ans[i][j] = Ans[i][j].multiply(C(m-1-k*n, n)); } //System.out.println(Ans[i][j]); } } } } public static void main(String[] args) { INIT(); GetAns(); Scanner cin = new Scanner(System.in); while(cin.hasNext()) { System.out.println(Ans[cin.nextInt()][cin.nextInt()]); //System.out.println(C(cin.nextInt(), cin.nextInt())); } }}
0 0
- Uva 10247 (组合计数)
- UVA-11609-Teams-组合计数
- UVA 10601 Cubes (组合数学 + ploya计数)
- 递推,计数(危险的组合,uva 580)
- UVa 11401 Triangle Counting (组合计数)
- 【组合计数dp】UVA 11401Triangle Counting
- Combinations(组合计数)
- UVa 11538(大白书105)象棋中的皇后(组合计数)
- POJ 3761 (组合计数)
- 组合计数总结(转)
- 数字组合(背包计数)
- uva 11038 How Many O's? 组合计数
- UVA 11174 - Stand in a Line(组合递归计数)
- 组合计数
- 组合计数
- [组合&计数]
- 组合计数
- 【BZOJ1211】树的计数(HNOI2004)-Prufer序列+组合计数
- 搭建struts2环境
- Android中Calendar类的用法总结
- 详解 QT 皮肤 QSS编程
- Java中浅复制和深复制
- Mac编译OpenJDK7(8)和Eclipse调试Hotspot
- Uva 10247 (组合计数)
- linux set 命令及linux设置环境变量命令
- hdu 2571 命运
- 前缀和系列题目
- 利用pdf.js在手机端网页中直接打开PDF文档
- 文件操作:模拟cp复制功能源码&&文件异步读写
- 单词来了!
- 内存优化,OOM异常处理
- OpenLayers3入门篇-点的扩散效果