UVa Online Judge

  题意是计算给定数量的边通过串联并联两种方式,能组成多少种不同的网络。将它转化为一个树形结构,也就是求有多少不同构的树。

代码如下:

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring> using namespace std; typedef long long LL;
const int N = ;
LL ans[N];
int s[N], top; LL com(LL n, LL m) {
LL ret = ;
for (int i = ; i < m; i++) ret *= n - i, ret /= i + ;
return ret;
} void dfs(int r, int x) {
if (r <= ) {
if (top <= ) return ;
int cnt = ;
LL tmp = ;
for (int i = ; i <= top; i++) {
if (s[i] == s[i + ]) cnt++;
else {
tmp *= com(ans[s[i]] + cnt - , cnt);
cnt = ;
}
}
ans[x] += tmp;
return ;
}
for (int i = s[top]; i <= r; i++) {
s[++top] = i, s[top + ] = -;
dfs(r - i, x);
top--;
}
} void PRE() {
ans[] = ;
for (int i = ; i < N; i++) {
s[top = ] = ;
ans[i] = ;
dfs(i, i);
//cout << i << ' ' << ans[i] << endl;
}
for (int i = ; i < N; i++) ans[i] <<= ;
} int main() {
PRE();
int n;
while (cin >> n && n) cout << ans[n] << endl;
return ;
}

UPD:

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring> using namespace std; typedef long long LL;
const int N = ;
LL dp[N][N], ans[N]; LL com(LL n, LL m) {
LL ret = ;
for (int i = ; i < m; i++) {
ret *= n - i;
ret /= i + ;
}
return ret;
} void PRE() {
ans[] = ;
dp[][] = ;
for (int i = ; i < N; i++) {
dp[i][] = dp[i][] = ;
for (int j = ; j < N; j++) {
dp[i][j] = ;
for (int k = ; k * i <= j; k++) {
dp[i][j] += com(ans[i] + k - , k) * dp[i - ][j - k * i];
}
}
ans[i + ] = dp[i][i + ];
//cout << ans[i + 1] << endl;
}
} int main() {
PRE();
int n;
while (cin >> n && n) cout << (n > ? ans[n] << : ) << endl;
return ;
}

——written by Lyon

最新文章

  1. EF7 使用 K EF 异常
  2. alternatives命令用法
  3. makefile变量赋值
  4. Perfect Scrollbar – 完美的 jQuery 滚动条插件
  5. map的用法
  6. Hibernate不能自动建数据表解决办法
  7. [原] XAF ListView显示隐藏Footer菜单
  8. git delete repository
  9. -_-#【事件】keyCode
  10. delphi 打开文件夹并定位到一个文件(使用ShellExecute时加一个select参数,原来这么简单!)
  11. javascript高级程序设计一(80-116)
  12. javascript学习(10)——[知识储备]链式调用
  13. HDU 5904 LCIS
  14. 1005 Number Sequence
  15. 鹅厂优文 | 决策树及ID3算法学习
  16. vfd电子时钟制作
  17. C# 冒泡法
  18. iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方
  19. RabbitMQ集群搭建和使用
  20. Python——SQLite

热门文章

  1. JSP向后台传 递 参 数 的四种方式
  2. spring mvc 引入log4日记记录maven工程 slf4j和log4j输出到控制台配合使用log4j不输出到文件
  3. Boost Asio教程集合
  4. ML面试1000题系列(81-90)
  5. 数组的方法之(Array.prototype.filter() 方法)
  6. GCC/GDB学习
  7. 错觉-Info:让你难以置信的视错觉
  8. Object Pool 对象池的C++11使用(转)
  9. Linux常用命令6 压缩解压命令
  10. PHP核心编程-图像操作