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所在的连通 ...
随机推荐
- 利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别
--------------------------------------------------低调的分割线-------------------------------------------- ...
- PHP的版本选择 (转)
PHP的版本选择 http://yubosun.akhtm.com/tech/php-version.htm PHP版本特别多,特别杂,想自己搭一套php的运行环境可不是一件容易的事,稍不留神就遇到一 ...
- Python—变量
1.在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量 2.访问限制: class内部属性可以被外部 ...
- C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命
使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠 ...
- awk 统计出现次数--转
知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序 ...
- Android WIFI 分析(一)
本文基于<深入理解Android WiFi NFC和GPS 卷>和 Android N 代码结合分析 WifiService 是 Frameworks中负责wifi功能的核心服务,它主 ...
- Light OJ 1030 - Discovering Gold(概率dp)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1030 题目大意:有一个很长的洞穴, 可以看做是1-n的格子.你的起始位置在1的 ...
- .net妹纸转Java---java环境的搭建,myeclipse10.0 的安装环境变量配置和破解
啦啦啦 ,因为公司项目需要,从我大火炉--大武汉被拖到了更大的火炉--大广西 其实一开始 我的内心是拒绝的. 但是我在大武汉呆了近2年木有出过远门,对, 生活除了眼前的苟且,还有远方的苟且.怀揣这样 ...
- Mina传输大数组,多路解码,粘包问题的处理
我的实际情况: 1,传递的业务数据种类很多,这就决定了我们要用多路解码器,MINA的中文手册提供的是DemuxingProtocolCodecFactory; 2,,有的数据长度达到8K,网上有资料说 ...
- CSS自动换行
style="word-break:break-all;word-wrap:break-word;"