解题报告(A,B,C)
来源:互联网 发布:网络ip地址设置 编辑:程序博客网 时间:2024/06/05 02:23
HUST/ACM08PC01解题报告(A,B,C)
A:
题目链接:
http://acm.hust.edu.cn/thx/problem.php?cid=1008&pid=0
题意:
一条直线上有n个点,只有相邻的点之间有边。直线外有两个点,分别与直线上的n
个点相连,但这两个点之间没有边。求这n+2个点可以构成的生成树的数目。
题解:
1,这个题目的原型是具体数学上的一个题目,但是直线外只有一个点,我只是将
其推广为两个点。
2,设直线外的两个点分别为点X和点Z,直线上的点分别为点Y(1)、Y(2)……Y(n)。
假设前n-1个点已经处理了,就算第n个点时候,就只与X、Y(n-1)和Z三个点有关,
不用考虑前面的点。则X、Y(n-1)和Z的关系就可以表示
为:{XY(n-1)Z}、{X:Y(n-1):Z}、{XY(n-1):Z}、{XZ:Y(n-1)}和{X:Y(n-1)Z}。(写
在一起表示在同一棵树上,用冒号隔开表示不在同一棵树上。)为了描述方便,在
下文中依次用F(n),G(n),H(n),I(n)和J(n)表示。
3,确定上面的5中关系,然后向其中添加第n个点。由于Y(n)与X、Y(n-1)和Z分别
有一条边相连,则将Y(n)加入的时候,一共有8中连边方式。所以将这5*8种情况算
出来,就可以得到地推关系式:
F(n) = 3*F(n-1) + G(n-1) + 2*H(n-1) + 2*I(n-1) + 2*J(n-1);
G(n) = G(n-1) + H(n-1) + J(n-1);
H(n) = G(n-1) + 2*H(n-1) + J(n-1);
I(n) = F(n-1) + I(n-1);
J(n) = G(n-1) + H(n-1) + 2*J(n-1);
4,得到递推式,然后就可以构造矩阵,用矩阵乘法来加速。
5,最后这个问题就解决了,时间复杂度是O(log n)的。上述方法是最朴实的做法了,cjq大牛用非常华丽的方法解了出来.
- 解题报告(A,B,C)
- FOJ1650-A^B mod C解题报告
- codeforces # 285 解题报告A.B.C
- CodeForce 837 A/B/C解题报告
- A - A+B(解题报告)
- HDU2035---(解题报告)人见人爱A^B
- 链式A+B(解题报告)
- CodeForces #213 (Div. 2) A,B,C 解题报告
- BestCoder Round #20 解题报告 A.B.C.
- Codeforces Round #283 (Div. 2) 解题报告(A B C)
- Codeforces Round #283 (Div. 1)解题报告A.B.C.
- Codeforces Good Bye 2014 解题报告 (A B C D)
- Codeforces Round #305 (Div. 1) A.B.C 解题报告
- Codeforces Round #283 (Div. 1)解题报告A.B.C.
- Codeforces Round #284(Div.2) A,B,C解题报告
- Codeforces Round #285(Div.2) A,B,C 解题报告
- BestCoder 2nd Anniversary A,B,C解题报告
- 解题报告: Educational Codeforces Round 24 A,B,C
- 例题 7-2 埃及分数
- 使用Eclipse Memory Analyzer对Tomcat进行内存分析
- Symfony2 教程 - 备忘
- hibernate电子书免费下载
- linux 查询某个目录下的文件中是否有某个字符串
- 解题报告(A,B,C)
- Linux串口—struct termios结构体
- 索引视图条件
- UVa11646
- EBS使用配置文件定义权限
- vim 代码格式设置
- VS 2010项目中添加lib库
- hdu 1247 hat's word (Trie树,水题)
- 牛腩新闻发布系统总结——整体篇