BZOJ 1430 小猴打架 - prufer数列
描述
一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过$N-1$次打架之后,整个森林的小猴都会成为好朋友。 现在的问题是,总共有多少种不同的打架过程。 比如当$N=3$时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程。
题解
问题 $=$ 求出$N$个有标号节点的树的个数 $\times$ 连边的顺序。
因为有 $N - 1$条边, 所以连边的顺序就是 $!(N-1)$。
然后需要考虑的就是$N$个有标号节点的树的个数。
我们首先要介绍prufer数列, 传送门
prufer数列的构造方法 :找出度数为1 的节点中标号最小的点$x$,将与它相连的节$y$点录入数列, 再删除$x$。
重复上述过程 , 直到只剩两个点。 这样构造出的数列与树唯一对应。 并且树也唯一对应数列。即数列的个数与树的个数相同。
个数都为$N^{N-2}$
最后的答案就是$N^{N - 2} \times !(N - 1)$
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod = ; ll ans, n; ll fpow(ll a,ll p) {
ll re = ;
for(; p; p >>= , a = a * a % mod) if(p & ) re = re * a % mod;
return re;
} int main()
{
scanf("%lld", &n);
ans = fpow(n, n - );
for(int i = ; i < n; ++i) ans = ans * i % mod;
printf("%lld\n", ans);
}
BZOJ 1430 小猴打架 - prufer数列的更多相关文章
- bzoj 1430: 小猴打架 -- prufer编码
1430: 小猴打架 Time Limit: 5 Sec Memory Limit: 162 MB Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是 ...
- bzoj 1430 小猴打架 prufer 性质
小猴打架 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 709 Solved: 512[Submit][Status][Discuss] Descri ...
- BZOJ.1430.小猴打架(Prufer)
题目链接 猴子之间的打架是棵无根树,有\(n^{n-2}\)种可能:同时n-1个过程的排列是\((n-1)!\) //820kb 104ms #include <cstdio> const ...
- bzoj 1430: 小猴打架
1430: 小猴打架 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 634 Solved: 461[Submit][Status][Discuss] ...
- BZOJ 1430 小猴打架(prufer编码)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1430 [题目大意] 一开始森林里面有N只互不相识的小猴子,它们经常打架, 但打架的双方 ...
- 【BZOJ 1430】 1430: 小猴打架 (Prufer数列)
1430: 小猴打架 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 625 Solved: 452 Description 一开始森林里面有N只互不相 ...
- [BZOJ1430] 小猴打架 (prufer编码)
Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森 ...
- BZOJ1430小猴打架——prufer序列
题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架 的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森林的小猴都会 ...
- 【bzoj1430】小猴打架 Prufer序列
题目描述 给出 $n$ 个点,每次选择任意一条边,问这样 $n-1$ 次后得到一棵树的方案数是多少. 输入 一个整数N. 输出 一行,方案数mod 9999991. 样例输入 4 样例输出 96 题解 ...
随机推荐
- BigDecimal空指针异常——个人应用
背景: 将数据库统计的数据,封装成了两个BigDecimal,此时要将两个BigDecimal进行运算.其中有一个没有数据的话,会报null(不管null值在前在后) 先上解决: 我把数据库的数据进行 ...
- node和yarn
nvm 版本管理工具 https://github.com/coreybutler/nvm-windows/releases nvm-setup nvm install +版本号 加版本 ...
- [Flutter] 一些面试可能会问基础知识
1. Flutter 是什么? Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被 ...
- rsync同步web数据
rsync远程同步web服务器的数据 实验拓扑 服务器A(rsync服务器)--------------服务器B( ...
- 34. CentOS-6.3安装配置Apache2.2.6
安装说明 安装环境:CentOS-6.3安装方式:源码编译安装 软件:httpd-2.2.6.tar.gz | pcre-8.32.tar.gz | apr-1.4.6.tar.gz | apr-u ...
- Node MonGoDb 简单的增删改查
let MongoClient = require("mongodb").MongoClient; let url = "mongodb://192.168.200.10 ...
- Delphi RAD Berlin OutputDebugString 输出调试信息
Delphi RAD Berlin Event Log.OutputDebugString 输出调试信息,仅在win VCL下可以用.OutputDebugString(PChar('hellowor ...
- cobbler配置解析
1.Cobbler命令说明: 命令名称 命令用途 cobbler check 检查cobbler配置 cobbler list 列出所有的cobbler元素 cobbler report 列出元素的详 ...
- Object-c 构造、析构函数
一.构造函数 在OC中凡是已init开头的函数我们都称之为构造函数,在声明构造函数的时候,不带参数的一般直接声明为“-(id)init”,带参数的一般声明为“-(id)initWith...”. @i ...
- unity 设置屏幕旋转
只允许竖屏: Portrait √ Portrait Upside Down √ Landscape Right × Landscape Left ...