![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 74
JokerPoker
已经失去安安静静专注下来做好一件事情的能力了。
展开
-
Prufer Code
这两天看了Prufer编码。意思就是把一棵n个节点并且带编号的无向树与一个n-2长度的数组建立双射。规则如下: (1)将树中与编号最小的叶节点相连的节点编号加入数组。 (2)删去编号最小的叶节点。 (3)重复第1个操作。直到树中只剩两个节点结束操作。 这样就得到了一组数。 通过Prufer编码得到的数组具有这些特性: 1.一棵树对应唯一的一组数组。原创 2014-12-29 08:20:19 · 1281 阅读 · 0 评论 -
乘法逆元
定义:满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。 为什么要有乘法逆元呢?当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。 证:(其实很简单。。。)根据b*k≡1 (mod p)有b*k=p*x+1。k原创 2014-12-29 08:20:53 · 218 阅读 · 0 评论 -
Splay Tree
SplayTree(又叫伸展树)本质上也是一棵二叉查找树。它不是严格平衡的,但通过一种伸展(splay)操作可以使它一次操作的时间均摊复杂度为O(logN)。详细时间复杂度证明请参考集训队论文。这里,我只说说伸展树的实际操作。 和其他二叉查找树一样,Splay Tree支持查找询问、修改、加入、删除等操作,但又有所不同。对于询问,每次找到目标值后,把目标位置伸展到根。 对于修改原创 2014-12-29 08:21:00 · 322 阅读 · 0 评论 -
扩展欧几里得
扩展欧几里得算法用于求解二元一次不定方程ax+by=c可以证明ax+by的最小正整数是gcd(a,b)。设:ax+by=bx'+(a mod b)y'=gcd(a,b), g=gcd(a,b)a modb=a-[a/b]*b //[a/b]暂且认为表示a除以b的下取整。。。则有:g=bx'+(a mod b)y' =bx'+(a-[a/b]*b)y' =bx'+ay'-[原创 2014-12-29 08:20:55 · 247 阅读 · 0 评论 -
向量旋转
Q:在计算几何中,知道一个坐标表示的向量和它的旋转方向及角度,求旋转后得到的向量。A:在Pascal中是有反三角函数的,因此就能用解三角形硬搞。但是如果我们要对精度进行严格限制,用函数的风险就会很大。那么,怎样才能求到精度很高的旋转向量呢? ①将一个向量正交分解成a,b两个向量。②按要求旋转a,b两个向量。③对a,b两个向量进行正交分解得到四个向量。④这四个向量的矢量和就是原向量经旋原创 2014-12-29 08:21:44 · 578 阅读 · 0 评论