uva 10253 Series-Parallel Networks (整数划分+多重集)
2024-10-08 01:01:14
题意是计算给定数量的边通过串联并联两种方式,能组成多少种不同的网络。将它转化为一个树形结构,也就是求有多少不同构的树。
代码如下:
#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
最新文章
- EF7 使用 K EF 异常
- alternatives命令用法
- makefile变量赋值
- Perfect Scrollbar – 完美的 jQuery 滚动条插件
- map的用法
- Hibernate不能自动建数据表解决办法
- [原] XAF ListView显示隐藏Footer菜单
- git delete repository
- -_-#【事件】keyCode
- delphi 打开文件夹并定位到一个文件(使用ShellExecute时加一个select参数,原来这么简单!)
- javascript高级程序设计一(80-116)
- javascript学习(10)——[知识储备]链式调用
- HDU 5904 LCIS
- 1005 Number Sequence
- 鹅厂优文 | 决策树及ID3算法学习
- vfd电子时钟制作
- C# 冒泡法
- iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方
- RabbitMQ集群搭建和使用
- Python——SQLite