Uva_10253 Series-Parallel Networks
题目大意:
1:一条单独的边是串并联网络
2:G1,G2为串并联网络, 将它们的源点与汇点分别连接起来, 得到的也是串并联网络(并联)
3:G1,G2为串并联网络, 将G1的汇点与G2的源点连接起来,得到的也是串并联网络(串联)
串联在一起的部分可以随意交换, 并联在一起的也可以随意交换顺序
要求:给n个点, 统计有多少种串并联网络。
思路:将这个网络简化成一颗树, 每颗子树就相当于一个网络, 那么有两种情况
1、根节点为并联网络
2、根节点为串联网络
由于顺序不影响结果, 所以这两种情况的结果是相等的,即只需要算出一种, 再乘以2即可得到答案
n个点, 即这颗树有n个叶子节点。
特例: n = 1的时候 只有一种结果
n >= 2时:
设f[i] 为叶子节点数为i的树的方案数, 则答案为:f[n](n > 1)
方法一:将n 进行整数拆分, 再对分拆数进行计算求和
方法二:设dp[i][j]为 每颗子树最大叶子节点数不超过i, 总叶子节点数为j 的方案数
则f[i] = dp[i-1][i]
而dp[i][j] = C(f[i] + p - 1, p) * dp[i - 1][j - p * i] (p * i <= j)
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN 31
#define LL long long
LL f[MAXN];
LL dp[MAXN][MAXN];//dp[i][j] = C(f[i] + p - 1, p) * dp[i - 1][j - p * i];
int n; LL C(LL n, LL k)
{
double ans = ;
for(int i = ; i < k; i ++)
ans = ans * (n - i);
for(int i = ; i <= k; i ++)
ans = ans / i;
return (LL) (ans + 0.5);
}
void init()
{
for(int i = ; i < MAXN; i ++) dp[i][] = ;
for(int i = ; i < MAXN; i ++) dp[][i] = dp[i][] = ;
f[] = ;
for(int i = ; i < MAXN; i ++)
{
for(int j = ; j < MAXN; j ++)
{
dp[i][j] = ;
for(int p = ; p * i <= j; p ++)
dp[i][j] += (C(f[i] + p - , p) * dp[i-][j-p*i]);
}
f[i + ] = dp[i][i + ];
}
} int main()
{
init();
while(scanf("%d",&n) && n)
{
printf("%lld\n", n == ? : * f[n]);
}
return ;
}
Uva_10253 Series-Parallel Networks的更多相关文章
- UVA 10253 Series-Parallel Networks (树形dp)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Series-Parallel Networks Input: standard ...
- Nodejs中Async模块的流程控制方法
首先,使用Asycn模块需要安装,它不是node自带的.其次,该模块有大约20多个流程控制方法,我们在这里仅分析常用的series, parallel, waterfall, auto这四种,并且尽量 ...
- 避免Node.js中回调地狱
为了解决这个阻塞问题,JavaScript严重依赖于回调,这是在长时间运行的进程(IO,定时器等)完成后运行的函数,因此允许代码执行经过长时间运行的任务. downloadFile('example. ...
- 你不知道的JavaScript--Item27 异步编程异常解决方案
1.JavaScript异步编程的两个核心难点 异步I/O.事件驱动使得单线程的JavaScript得以在不阻塞UI的情况下执行网络.文件访问功能,且使之在后端实现了较高的性能.然而异步风格也引来了一 ...
- gulp4.0 前端构建脚手架
最近看了下gulp4.0的升级,感觉和3.0相比变化还是比较大的,很多3.0的写法和插件会出现一些莫名其妙的变化,详细的变化就先不说了,这里我直接把我配置好的代码拿过来吧,方便各位可以更好的学习和使用 ...
- Enhancing network controls in mandatory access control computing environments
A Mandatory Access Control (MAC) aware firewall includes an extended rule set for MAC attributes, su ...
- gulp源码分析
一.整体结构分析 整体结构 通过在nodejs环境对源码的打印,我们最终得到的gulp实例行如下图.那么我们gulp实例上的属性和方法是如何生成的呢? Gulp { domain: null, _ev ...
- Feature Fusion for Online Mutual Knowledge Distillation (CVPR 2019)
一.解决问题 如何将特征融合与知识蒸馏结合起来,提高模型性能 二.创新点 支持多子网络分支的在线互学习 子网络可以是相同结构也可以是不同结构 应用特征拼接.depthwise+pointwise,将特 ...
- 跟着文档学习gulp1.2创建任务(task)
导出任务 任务(task)可以分为公开(public)或私有(private)类型 公开任务从gulpfile中被导出(export),可以通过gulp命令直接调用 私有任务被设计为在内部使用,通常作 ...
- async异步流程控制神器
async https://www.npmjs.com/package/async Async is a utility module which provides straight-forward, ...
随机推荐
- C++之枚举
1. 声明枚举类型格式 enum Day{ Mon,Tue=5,Wed};//Mon=0;Tue=5;Wed=6 enumDay1{Mon1,Tue1,Wed1};//Mon1=0;Tue1=1;We ...
- android 73 下载图片
package com.ithiema.imageviewer; import java.io.InputStream; import java.net.HttpURLConnection; impo ...
- QT皮肤系统的动态切换
应用需求: 提供皮肤切换选项,在不重启应用程序的情况下实现皮肤的动态切换. 理论基础: 1) 图片资源是如何被利用的 这里先简要说明一下实现原理,皮肤的动态切换其关键在于图片资源的加载方式.QT中每个 ...
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: 2. 代码实现: (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5) ...
- plupload使用指南(转)
转自http://www.cnblogs.com/2050/p/3913184.html 现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SWFUpload显然就有点过时了,毕 ...
- Bash判断文件是否存在
#!/bin/bash if [ -f filename ]; then echo 'file exist' else echo 'file not exist' fi
- Java Post 数据请求和接收
这两天在做http服务端请求操作,客户端post数据到服务端后,服务端通过request.getParameter()进行请求,无法读取到数据,搜索了一下发现是因为设置为text/plain模式才导致 ...
- (转)一个form表单实现提交多个action
方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 ...
- 父页面iframe自动适应子页面的宽高度
<script type="text/javascript"> function load(){ parent.document.getElementById(&quo ...
- 微信分组群发图文40152,微信分组群发图文invalid group id hint
微信分组群发40152,微信分组群发invalid group id hint >>>>>>>>>>>>>>> ...