poj 1737 Connected Graph
// poj 1737 Connected Graph
//
// 题目大意:
//
// 带标号的连通分量计数
//
// 解题思路:
//
// 设f(n)为连通图的数量,g(n)为非连通图的数量,h(n)为所有的
// 图的数量,h(n) = 2 ^(n * (n - 1) / 2);
// f(n) + g[n] = h(n).
//
// 考虑标号为1在哪个连通分量内,设连通分量内有k个点,则问题为
// 在n-1个点中选择k-1个点的方法数 C(n-1,k-1),此时1所在的连通图数
// 为f(k),另一部分为n-k个点的图的所有数量,因为此时已经设了1所在
// 的连通图和剩余部分已经是不连通了,则
// g(n) = sigma(C(n-1,k-1)*f(k)*h(n-k)){ 1<= k <= n-1}
// f[n] = h[n] - g[n]; import java.util.*;
import java.io.*;
import java.math.BigInteger; class Main{
public static void main(String[] args){
final int MAX_N = ; BigInteger[][] C = new BigInteger[MAX_N][MAX_N]; BigInteger[] f = new BigInteger[MAX_N];
BigInteger[] g = new BigInteger[MAX_N];
BigInteger[] h = new BigInteger[MAX_N]; C[][] = new BigInteger(""); for (int i=;i<MAX_N;i++){ C[i][] = C[i][i] = new BigInteger(""); for (int j=;j<i;j++){
C[i][j] = new BigInteger("");
C[i][j] = C[i][j].add(C[i-][j]);
C[i][j] = C[i][j].add(C[i-][j-]);
}
} for (int i=;i<MAX_N;i++){
h[i] = new BigInteger("");
h[i] = h[i].pow(i*(i-)/);
}
f[] = h[] = new BigInteger("");
for (int i=;i<MAX_N;i++){
g[i] = new BigInteger(""); for (int j=;j<i;j++){
g[i] = g[i].add(C[i-][j-].multiply(f[j].multiply(h[i-j])));
}
f[i] = h[i].subtract(g[i]);
} Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){ int x = sc.nextInt();
if (x==)
break;
System.out.println(f[x]);
} }
}
poj 1737 Connected Graph的更多相关文章
- POJ 1737 Connected Graph 题解(未完成)
Connected Graph Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3156 Accepted: 1533 D ...
- POJ 1737 Connected Graph (大数+递推)
题目链接: http://poj.org/problem?id=1737 题意: 求 \(n\) 个点的无向简单(无重边无自环)连通图的个数.\((n<=50)\) 题解: 这题你甚至能OEIS ...
- POJ 1737 Connected Graph(高精度+DP递推)
题面 \(solution:\) 首先做个推销:带负数的压位高精度(加减乘+读写) 然后:由 \(N\) 个节点组成的无向图的总数为: \(2^{N*(N-1)/2}\) (也就是说这个图总共有 \( ...
- POJ1737 Connected Graph
Connected Graph Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3156 Accepted: 1533 D ...
- Connected Graph
Connected Graph 求n个点的无向联通图数量,\(n\leq 50\). 解 直接无向联通图做状态等于是以边点做考虑,难以去重,考虑联通对立面即不联通. 不难求出n个点的总方案数为\(2^ ...
- 【poj1737】 Connected Graph
http://poj.org/problem?id=1737 (题目链接) 题意 求n个节点的无向连通图的方案数,不取模w(゚Д゚)w Solution 刚开始想了个第二类斯特林数,然而并不知道怎么求 ...
- poj 3334 Connected Gheeves (Geometry + BInary Search)
3334 -- Connected Gheeves 题意是,给出两个尖形的相连的容器,要求向其中灌水.它们具有日常的物理属性,例如两个容器中水平面高度相同以及水高于容器顶部的时候就会溢出.开始的时候打 ...
- poj 1737男人八题之一 orz ltc
这是楼教主的男人八题之一.很高兴我能做八分之一的男人了. 题目大意:求有n个顶点的连通图有多少个. 解法: 1. 用总数减去不联通的图(网上说可以,我觉得时间悬) 2. 用动态规划(数学递推) ...
- POJ 1737 统计有n个顶点的连通图有多少个 (带标号)
设f(n)为所求答案 g(n)为n个顶点的非联通图 则f(n) + g(n) = h(n) = 2^(n * (n - 1) / 2) 其中h(n)是n个顶点的联图的个数 这样计算 先考虑1所在的连通 ...
随机推荐
- Erp中的ATP和CTP是什么?两者有什么区别?
可用量承诺(Available to Promise,ATP),是一种库存匹配模型,意在最大限度地利用库存产品对客户订单需求做出及时和准确的反应,缩短交货提前期.降低库存水准: 可用生产能力承诺(Ca ...
- DBCP数据源连接池实现原理分析
前些天在调试公司系统的时候发现这样的一个问题:mysql数据库服务停止一段时间后再次重启后吗,tomcat服务无法请求数据库服务,调试了半天对这个问题进行定位解决,期间也搞了很多有关mysql数据库的 ...
- php常用的字符串函数
addslashes -- 使用反斜线引用字符串 chr -- 返回相对应于 ascii 码值所指定的单个字符. chunk_split -- 将字符串分割成小块 count_chars -- 返回 ...
- 自定义View(三)实现简单的可拖动、可缩放的ImageView
实现技术主要用到1.多点触摸 2.matrix的矩阵,平移.缩放 根据手指的数量判断是进行的拖动.还是缩放动作 package com.bi.xintest; import android.cont ...
- object.bind()方法的低版本兼容
Function.prototype.bind= function(obj){ var _self = this, args = arguments; return function() { _sel ...
- sublime插件 cssComb实现css自动排序及格式化
cssComb是一个实现css代码自动排序,当然顺便也实现了代码的格式化 安装: 首先需要打开sublime搜索安装csscomb插件(前提是已经安装了sublime的package control) ...
- 使用winpcap多线程抓包,以及简单的分析数据包
刚开始使用winpcap数据包的时候,我在抓包的时候使用了 pcap_loop(adhandle, 0, packet_handler, NULL); 这个回调函数进行抓包.同时在回调函数中分析IP地 ...
- php的cookie和session相同主域名共享
如何使用chrome查看cookie和session详见另一篇文章,点这里 首先说cookie, $cookieDomain = '.elf.com'; setcookie('elf', 'im el ...
- Android studio下载依赖包很慢
build gradle文件 buildscript { repositories { //jcenter() maven { url 'http://maven.oschina.net/conten ...
- MyISAM和InnoDB索引区别
MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 图8 这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表 ...