算法
网吧猪
cocos, Android, Unity, 服务端
展开
-
无根树(无环连通无向图)的Prufer编码
Prufer 数列,可以用来解一些关于无根树计数的问题。 Prufer 数列是一种无根树的编码表示,对于一棵 nnn 个节点带编号的无根树,对应唯一一串长度为 n−1n−1n-1 的 Prufer 编码。 (1)无根树转化为 Prufer 序列。 首先定义无根树中度数为 111 的节点是叶子节点。 找到编号最小的叶子并删除,序列中添加与之相连的节点编号,重复执行直到只...原创 2018-05-10 23:15:42 · 4369 阅读 · 0 评论 -
欧拉函数:计算1~N中与N互质的数的个数
欧拉函数定义:对于所有的 a,ba,ba, b,若 gcd(a,b)=1gcd(a,b)=1gcd(a, b)=1,则称 a,ba,ba, b 互质。计算方式:[1,N][1,N][1, N] 中与 NNN 互质的数的个数被称为欧拉函数,记为 ϕ(N)ϕ(N)\phi(N)。int phi(int n) { int ans = n; for (int i = 2; i &l...原创 2018-05-11 21:28:36 · 4703 阅读 · 0 评论 -
BZOJ 1008: [HNOI2008]越狱 - 组合数学
监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱直接计算产生相邻的情况相当复杂,但发生相邻的情况数量等于总数量减去不相邻数量。不相邻数量可以按照如下方法构造:第一个人有 mmm 种可能,要不产生相邻则第二个人只有 m−1m−1m-1 种选择,第三个人也是,以此类推,...原创 2018-05-11 21:39:41 · 233 阅读 · 0 评论