摘要: ╭(′▽`)╯ 总之,我们都知道lca是啥,不需要任何基础也能想出来怎么用最暴力的方法求LCA,也就是深度深的点先跳到深度浅的点的同一深度,然后一起向上一步步跳。这样显然太慢了! 所以我们要用倍增,倍增比较屌,直接2^k速度往上跳,而且复杂度和树剖lca差不多,那么步骤分为两步 1.让两个点到同一深 阅读全文
posted @ 2019-10-04 19:24 dudujerry 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 拓扑排序 首先要求图为DAG 算法:首先将度为1的节点加入队列每次取出队首点u,在图中删去和u相邻的边继续将度数为1的点加入队列 到了最后, 如果没有度数为1的点,则图不是DAG 通过拓扑排序可以给DAG中的节点编号,也可以用来判断DAG 由于DAG有严格的顺序,不存在从后向前连接的边,所以可以做d 阅读全文
posted @ 2019-10-04 15:01 dudujerry 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 一、不定方程 要求逆元,首先要知道什么是不定方程。 已知a,b,c,求解x,y,形如ax + by = c 的方程就是不定方程。 不定方程有两种解的情况: 1.无解 2.存在且有无限的解 那么,如何判断解的情况呢? 这时候,只需要拿出gcd就可以了, 若gcd(a,b) | c,则方程存在解,为什么 阅读全文
posted @ 2019-10-04 08:44 dudujerry 阅读(839) 评论(0) 推荐(0) 编辑
摘要: 我恨数论 因为打这篇的时候以为a|b是a是b的倍数,但是懒得改了,索性定义 a|b 为 a是b的倍数 咳咳,那么进入正题,如何证明gcd,也就是 gcd(a,b) = gcd(b,a%b)? 首先,设 p = a/b,c = a mod b 则a = p*b + c m = gcd(a,b),n = 阅读全文
posted @ 2019-10-03 19:28 dudujerry 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 操作数,一般用来做那些对数列进行添加、撤销操作的题。 假设一开始有一个空数列,有三个操作 (1)在数列后加一个数 (2)求数列中某位置的值 (3)撤销掉最后进行的若干次操作(1和3) 考虑建一棵树,1操作则为在当前节点下新加一个节点,2操作求数列k位置值,则为从根节点到当前节点k个节点的位置的节点 阅读全文
posted @ 2019-10-03 08:22 dudujerry 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 所谓二分图,是可以分为两个点集的图; 所谓二分图最大匹配,是两个点集之间,每两个不同点集的点连接,每个点只能连一个点,最大的连接数就是最大匹配。 如何解最大匹配,需要用到匈牙利算法。 另:本文写了很多细节,有的地方比较啰嗦,请大佬放过 匈牙利算法是一个递归的过程,它的特点,我觉得可以归为一个字:“让 阅读全文
posted @ 2019-09-14 15:08 dudujerry 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 一、基础操作 1.a<<b 将二进制a左移b位,不够的地方用0补位 例如 100<<2 == 10000 2.a>>b 将二进制a右移b位 例如 100>>2 == 1 3.a|b 或操作(按位或),相同位中只要有一个1或者两个1则结果为1,全0则结果为0 4.a&b 与操作(按位与),相同位中只要 阅读全文
posted @ 2019-07-31 11:30 dudujerry 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 快速幂:因为a+b=c => n^a * n^b = n^c 所以n^m可以分解为n^m=n^a1 * n^a2 * n^a3... * n^ak ,a1+a2+a3...+ak=m 所以我们想到,如果存在k<m,并且可以以O(k)的复杂度求出n^a1、n^a2、n^a3...n^ak中的每一个数, 阅读全文
posted @ 2019-04-13 19:27 dudujerry 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 如何查找一个范围内的所有素数? 可以是从1~n挨个判断n%i 是否 == 0,也可以从 1~sqr(n) 一个个判断。 相信你们也听说过埃氏筛法,是使用每一个数的倍数筛掉合数!但是!每一个合数要被筛多次!这就给了我们优化的可乘之机! 它叫做线性筛,顾名思义,时间复杂度是线性的。 我们都知道,线性的复 阅读全文
posted @ 2019-03-29 23:36 dudujerry 阅读(670) 评论(0) 推荐(0) 编辑
摘要: 对于线段树,我们一般需要n*4的空间去存储线段树,然后有一种玄学操作是用指针来实现线段树。 #include <inttypes.h> #include <algorithm> #include <cstdio> #include <iostream> #include <vector> #defi 阅读全文
posted @ 2019-02-23 16:43 dudujerry 阅读(671) 评论(0) 推荐(0) 编辑