摘要: prim 先将一个点加入集合中,维护一个dis数组,表示该点距集合中的点的最小距离,每次选取dis的最小值,并把那个点加入集合,更新dis。 可以用优先队列优化 kruskal 把所有的边按边权从小到大排序,利用并查集维护集合关系,对于每条边,若两点不在同一集合,则把两点连接。 Boruvka 假设 阅读全文
posted @ 2020-07-27 11:36 hezongdnf 阅读(156) 评论(0) 推荐(0) 编辑
摘要: trie树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 每一个节点都有26 阅读全文
posted @ 2020-07-27 11:08 hezongdnf 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 二分的应用场景 典型的二分$lower\_bound$,二分是求单调函数的某个值,比如说在一个有序序列中寻找是否存在某个数。 三分的应用场景 三分是求单峰函数的极值,比如说我想知道某个最优解,而最优解左边和右边都大于(或小于)最优解,这时候就可以利用三分 阅读全文
posted @ 2020-05-17 07:24 hezongdnf 阅读(240) 评论(0) 推荐(1) 编辑
摘要: 杜教BM %%% 阅读全文
posted @ 2020-05-14 19:11 hezongdnf 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 换根dp 阅读全文
posted @ 2020-05-14 16:50 hezongdnf 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 博弈论 mex 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。 例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex=0。 sg函数 定义P-position和N-position,其中P代表Previous,N 阅读全文
posted @ 2020-05-11 10:02 hezongdnf 阅读(222) 评论(0) 推荐(0) 编辑
摘要: nim博弈 有$n$堆石子,两个人,每个人轮流取,选择一堆石子并拿走若干颗,如果轮到某个人时所有的石子堆都已经被拿空了,则判负。 当a[1] ^ a[2] ... ^a[n] == 0时是必败态。 比如说有三堆石子 $4,9,13$,我们把数看成2进制。 不管先手取任何的石子,后手只需要取对应的石子 阅读全文
posted @ 2020-05-09 10:16 hezongdnf 阅读(199) 评论(0) 推荐(0) 编辑
摘要: Problem Description 一共有$n$个数,第$i$个数是$x_i$,$x_i$可以取$[l_i , r_i]$中任意的一个值。 设$S = \sum {x_i}^2$,求$S$种类数。 Analysis of ideas C++的 bitset 在 bitset 头文件中,它是一种类 阅读全文
posted @ 2020-05-08 10:30 hezongdnf 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 参考博客 [https://www.cnblogs.com/pealicx/p/6859901.html] 阅读全文
posted @ 2020-04-23 09:09 hezongdnf 阅读(195) 评论(0) 推荐(0) 编辑
摘要: dfs序 可以将树型结构转换成线性结构 使得每个节点的子树都在一个连续的区间上,然后我们就可以使用一些线性数据结构维护树 阅读全文
posted @ 2020-03-29 13:39 hezongdnf 阅读(195) 评论(0) 推荐(0) 编辑
摘要: dsu on tree 树上启发式合并 一般解决下列特征的题目: 1.询问子树的某些信息 2.没有修改操作 "codeforces 600 E. Lomsat gelral" Problem Description 一棵树有n个结点的有根数,每个结点都有一种颜色,每个颜色有一个编号,求树中每个节点的 阅读全文
posted @ 2020-03-28 08:43 hezongdnf 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 树的重心 树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 一棵有根树至多有两个重心 思路 把无根树变成有根树,任意选定一个根,进行dfs 统计每一个点,以它子节点为根的所有树里面节点数的最大值,如果最大值小于已知 阅读全文
posted @ 2020-03-09 13:17 hezongdnf 阅读(164) 评论(0) 推荐(0) 编辑
摘要: Problem Description 有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 Analysis of ideas 滑动窗口 比如说我们求一个区间的最小值,这个时候来了一个最小的,那么前面保存的信息 阅读全文
posted @ 2020-02-24 10:19 hezongdnf 阅读(102) 评论(0) 推荐(0) 编辑
摘要: Problem Description "hdu 1506" A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal 阅读全文
posted @ 2020-02-24 10:05 hezongdnf 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 背包问题 01背包 $n$个物品,每个物品都有一个价值和体积,有一个容量为$V$的背包,最大可以得到的价值是多少 每个物品都有两种可能,选与不选 code 背包恰好装满 定义$dp[i]$表示$i$状态可达,初始化$dp$为$0$,代表不可达,$dp[0] = 1$,代表可达 状态转移方程$dp[i 阅读全文
posted @ 2020-02-08 19:23 hezongdnf 阅读(131) 评论(0) 推荐(0) 编辑
摘要: Problem Description "hdu3507" Zero has an old printer that doesn't work well sometimes. As it is antique, he still like to use it to print articles. B 阅读全文
posted @ 2020-02-08 19:13 hezongdnf 阅读(152) 评论(0) 推荐(0) 编辑
摘要: Problem Description "互不侵犯" 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 Analysis of ideas 把每一行的每一个状态用一个二进制数表示 定义dp[i][j 阅读全文
posted @ 2020-02-08 12:53 hezongdnf 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 区间dp 区间dp的一般形式 阅读全文
posted @ 2020-02-08 09:44 hezongdnf 阅读(97) 评论(0) 推荐(0) 编辑
摘要: Problem Description "没有上司的舞会" 某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职 阅读全文
posted @ 2020-02-08 08:10 hezongdnf 阅读(127) 评论(0) 推荐(0) 编辑
摘要: Longest Increasing Subsequence 求最长上升子序列 定义$dp[i]$表示以$i$结尾的最长上升子序列的长度,O($n^2$) 定义$dp[i]$表示长度为$len$的上升子序列的第$i$个数,O($nlogn$) 求最长上升子序列的划分,等于求最长不上升子序列的长度 比 阅读全文
posted @ 2020-02-01 19:33 hezongdnf 阅读(189) 评论(0) 推荐(0) 编辑
摘要: Problem Description "P1196 [NOI2002]银河英雄传说" Analysis of ideas Accepted code 阅读全文
posted @ 2020-01-30 09:41 hezongdnf 阅读(131) 评论(0) 推荐(0) 编辑
摘要: Problem Description " P2024 [NOI2001]食物链 " 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道 它到底是哪一 阅读全文
posted @ 2020-01-30 09:14 hezongdnf 阅读(123) 评论(0) 推荐(0) 编辑
摘要: python 输入输出 s = input() 返回值是str类型,如果需要输入int型 a = int(intput()) input一次是读取一行,如果一行有多个数据a = list(map(int, input().split())) for循环 for i in a: #遍历元组,类似于au 阅读全文
posted @ 2020-01-26 11:03 hezongdnf 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 可持久化线段树 静态区间第 $k$ 小 给定 $n$ 个整数构成的序列,将对于指定的闭区间查询其区间内的第 $k$ 小值。 权值线段树 权值线段树就是对一个值域上值的个数进行维护的线段树。 举个栗子,对于1,1,2,3,3,3,4,4。 在权值线段树上如何求第k小的值? 显然如果左子树的值大于k的话 阅读全文
posted @ 2020-01-25 16:48 hezongdnf 阅读(167) 评论(0) 推荐(0) 编辑
摘要: ST表 与线段树相比,预处理复杂度同为O(nlogn),查询时间上,ST表为O(1),线段树为O(nlogn) 适合求区间最值问题,不适合求区间和 c++ int a[maxn],st[maxn][20]; void rmq(int n) //建立st表 { for(int j = 1; (1 阅读全文
posted @ 2020-01-25 09:40 hezongdnf 阅读(272) 评论(0) 推荐(0) 编辑
摘要: Problem Description https://www.luogu.com.cn/problem/P1972 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳, 因此,他的项链变得 阅读全文
posted @ 2020-01-25 09:40 hezongdnf 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 树状数组 一般求解带修改的区间查询。比如带修改的区间和问题。 lowbit lowbit(x) 二进制下x最低位的1所对应的数,返回的是$2^k$。 比如8(1000)返回8,7(0111) 返回1。 比如说要更新2这个点,首先 更新,然后 更新,然后 更新... 更新7这个点,首先 更新,然后 更 阅读全文
posted @ 2020-01-25 09:39 hezongdnf 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 树链剖分 轻重链剖分 利用dfs序,不停的跳链的顶端,直到跳到同一条重链上。 阅读全文
posted @ 2020-01-22 11:45 hezongdnf 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即 阅读全文
posted @ 2020-01-22 11:23 hezongdnf 阅读(142) 评论(0) 推荐(0) 编辑
摘要: AC自动机 阅读全文
posted @ 2020-01-15 14:20 hezongdnf 阅读(155) 评论(0) 推荐(0) 编辑
摘要: KMP 求 匹配串$s2$ 在 模式串$s1$ 中出现的次数或者位置 首先求出模式串的$next$数组,表示以$i$结尾的子串可以匹配到的最大前缀长度。 匹配过程:移动模式串 阅读全文
posted @ 2020-01-15 13:06 hezongdnf 阅读(89) 评论(0) 推荐(0) 编辑
摘要: manacher manacher可以在$O(n)$的时间内求解一个字符串的最长回文子串长度 朴素的做法: 枚举区间左右端点$l$,$r$,判断$[l,r]$是否回文,时间复杂度$O(n^3)$ 优化: 枚举回文中心,分别左右扩展,时间复杂度$O(n^2)$ 再优化 利用了回文的左右两边相等的性质 阅读全文
posted @ 2020-01-15 11:50 hezongdnf 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 字符串hash 就是把一个字符串转换成整数 可以理解成有一个函数,输入一个字符串,输出一个整数 而我们要做的就是构造这么一个函数,使得不同的$x$对应不同的$y$ 首先我们选取一个$base$做为要转换的进制数,然后选取一个恰当的余数$M$(减少$hash$冲突) code 注意事项 不要把任意字符 阅读全文
posted @ 2020-01-15 10:33 hezongdnf 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 求$a[u] a[v]$的最大值 已知$a[1] a[2] 对于每个不等式 $x[i] x[j] i的有向边,边权为a[k] $a[u] a[v]$的最大值就是求v到u的最短路 求$a[u] a[v]$的最小值 已知$a[1] a[2] = 5$,那么 $a[1] a[2]$ 的最小值就是5 如果$ 阅读全文
posted @ 2019-12-26 10:48 hezongdnf 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 组合数通项公式 \(C_n^m=\frac{n!}{m!*(n-m)!}\) 组合数递推公式 \(C_n^m=C_{n-1}^m+C_{n-1}^{m-1}\) 解释:从n个数里面选m个数,如果第n个数不选,就要从n-1个数里面选m个数 如果第n个数选,那么就要从n-1个数选m-1个数,有点类类似于 阅读全文
posted @ 2019-12-25 15:52 hezongdnf 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 莫比乌斯函数 模板 阅读全文
posted @ 2019-12-22 20:57 hezongdnf 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数 计算与n互质的正整数个数 线性求eular 直接求euler 参考博客 阅读全文
posted @ 2019-12-22 20:47 hezongdnf 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 欧拉筛法 每个合数仅被它的最小质因数筛去 阅读全文
posted @ 2019-12-21 16:08 hezongdnf 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 逆元 逆元就是在mod意义下,不能直接除以一个数,而要乘以它的逆元。 $a \times x = 1 \mod p$,那么$x$就是$a$在$p$下的逆元,除以$a$就等于乘以$x$ 扩展欧几里得 扩展欧几里得是求一组 $x,y$ 使得 $a \times x + b \times y = \gcd 阅读全文
posted @ 2019-12-21 15:48 hezongdnf 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 算法思想 我们想求得一组$x,y$使得 $ax+by = \gcd(a,b)$ 根据 $\gcd(a,b) = \gcd(b,a\bmod b)$ 如果我们现在有$x',y'$ 使得 $bx'+(a\bmod b)y' = \gcd(b,a\bmod b)$ 那么 $ax+by = bx'+( a 阅读全文
posted @ 2019-12-21 14:53 hezongdnf 阅读(239) 评论(0) 推荐(0) 编辑