pku1737(求连通图个数,运用高精度加法,减法,乘法,组合数)
来源:互联网 发布:王司徒 知乎 编辑:程序博客网 时间:2024/06/05 09:43
http://162.105.81.212/JudgeOnline/problem?id=1737
题意: 一个无向图就是有v个顶点和e条边(E∈{V*V})构成的一个集合。如果一个无向图对于每个点对(u,v)都可以从u通过边到底v,那么这个图就是连通的,你的任务就是写一个程序来计算总共有多少个不同的包含n个顶点的连通的无向图;
分析:对于我老菜来说此题是很好很难的图论+数论。自己弄了很久,最后看了牛人的解题报告才弄明白,汗~废话少说贴下牛人的报告吧。
题目大致意思是给定n个点,求这n个点的连通图的个数。
用g(n)表示n个点总共可以表示成几个图,因为总共有n*(n-1)/2条边,而这n*(n-1)/2中每条边连或不连有两种可能,所以g(n)=2^(n*(n-1)/2)
所以连通图的个数=总的图的个数-不是连通图的个数;
那令f(n)表示n个点的连通图的个数;
而不连通的图的个数是顶点数小于n的连通图的个数乘以剩下的顶点总共的图的个数,即
;如图 :
所以
但是…
真的是Cin吗,看一个例子
1)
2)
1)和2)其实是同一种状态,但是按 算选出(1,2)是一种,选出(3,4)是一种,所以产生了重复。
那么该怎么修改呢,其实只要固定一个点,假设是1,再从n-1个点中选出i-1个点去跟1构成连通图即Ci-1n-1,那样就可以避免重复了;
综上:
因为n=11时数据就已经达到
35641657548953344了;
N=12的话就超过__int64的范围了。
所以此题必然要用到高精度了。
在计算f,Cin的时候把f,Cin算出来后保存下来,避免重复计算,否则有可能超时。
还有个要注意的就是:计算Cin时可以用公式Cin= Ci-1n+Ci-1n-1,这样就可以用高精度加法递推出来了。
- pku1737(求连通图个数,运用高精度加法,减法,乘法,组合数)
- PKU1737 解题报告 Connected Graph __高精度加法,乘法,减法,组合数
- pku1737给定点求连通图的个数
- 高精度运算-(加法减法乘法)
- 高精度加法减法乘法除法
- 大数加法 减法 乘法 除法 高精度四则运算
- 大数加法 减法 乘法 除法 高精度四则运算
- C++ 高精度加法 高精度减法 高精度乘法1
- C语言(7)--高精度加法、减法、乘法、今天是星期几、四位平方数、候选人选票问题
- 高精度加法&高精度减法
- 高精度减法,高精度乘法
- 整数高精度运算的库(加法,减法,乘法,除法,取模)
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- 高精度加法与减法
- 高精度(乘法和加法)
- 大数减法、加法、乘法
- 大数加法、减法、乘法
- 大数加法、减法、乘法、除法、求余、比较、乘方(代码简短(总计150)、易懂)
- Linux内核修炼之道》精华分享与讨论(20)——学会使用Git
- Linux内核修炼之道》精华分享与讨论(21)——二分法与printk()
- 《Linux内核修炼之道》精华分享与讨论(22)——方法论
- 《Linux内核修炼之道》 之 高效学习Linux内核
- 《Linux内核修炼之道》 之 高效学习Linux驱动开发
- pku1737(求连通图个数,运用高精度加法,减法,乘法,组合数)
- 配置文件助手 2.1
- d3d中三维物体到屏幕的呈现
- 016 测试菜单5
- android listview详解
- 技能系统设计笔记 2
- c++
- 技能系统设计笔记 3
- mssql 获取动态sql语句中的值