摘要:
prim 先将一个点加入集合中,维护一个dis数组,表示该点距集合中的点的最小距离,每次选取dis的最小值,并把那个点加入集合,更新dis。 可以用优先队列优化 kruskal 把所有的边按边权从小到大排序,利用并查集维护集合关系,对于每条边,若两点不在同一集合,则把两点连接。 Boruvka 假设
阅读全文
posted @ 2020-07-27 11:36
hezongdnf
阅读(158)
推荐(0)
摘要:
trie树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 每一个节点都有26
阅读全文
posted @ 2020-07-27 11:08
hezongdnf
阅读(134)
推荐(0)
摘要:
二分的应用场景 典型的二分$lower\_bound$,二分是求单调函数的某个值,比如说在一个有序序列中寻找是否存在某个数。 三分的应用场景 三分是求单峰函数的极值,比如说我想知道某个最优解,而最优解左边和右边都大于(或小于)最优解,这时候就可以利用三分
阅读全文
posted @ 2020-05-17 07:24
hezongdnf
阅读(277)
推荐(1)
posted @ 2020-05-14 19:11
hezongdnf
阅读(139)
推荐(0)
posted @ 2020-05-14 16:50
hezongdnf
阅读(185)
推荐(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
阅读(264)
推荐(0)
摘要:
nim博弈 有$n$堆石子,两个人,每个人轮流取,选择一堆石子并拿走若干颗,如果轮到某个人时所有的石子堆都已经被拿空了,则判负。 当a[1] ^ a[2] ... ^a[n] == 0时是必败态。 比如说有三堆石子 $4,9,13$,我们把数看成2进制。 不管先手取任何的石子,后手只需要取对应的石子
阅读全文
posted @ 2020-05-09 10:16
hezongdnf
阅读(202)
推荐(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
阅读(317)
推荐(0)
摘要:
参考博客 [https://www.cnblogs.com/pealicx/p/6859901.html]
阅读全文
posted @ 2020-04-23 09:09
hezongdnf
阅读(197)
推荐(0)
摘要:
dfs序 可以将树型结构转换成线性结构 使得每个节点的子树都在一个连续的区间上,然后我们就可以使用一些线性数据结构维护树
阅读全文
posted @ 2020-03-29 13:39
hezongdnf
阅读(197)
推荐(0)
摘要:
dsu on tree 树上启发式合并 一般解决下列特征的题目: 1.询问子树的某些信息 2.没有修改操作 "codeforces 600 E. Lomsat gelral" Problem Description 一棵树有n个结点的有根数,每个结点都有一种颜色,每个颜色有一个编号,求树中每个节点的
阅读全文
posted @ 2020-03-28 08:43
hezongdnf
阅读(156)
推荐(0)
摘要:
树的重心 树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 一棵有根树至多有两个重心 思路 把无根树变成有根树,任意选定一个根,进行dfs 统计每一个点,以它子节点为根的所有树里面节点数的最大值,如果最大值小于已知
阅读全文
posted @ 2020-03-09 13:17
hezongdnf
阅读(174)
推荐(0)
摘要:
Problem Description 有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 Analysis of ideas 滑动窗口 比如说我们求一个区间的最小值,这个时候来了一个最小的,那么前面保存的信息
阅读全文
posted @ 2020-02-24 10:19
hezongdnf
阅读(109)
推荐(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
阅读(124)
推荐(0)
摘要:
背包问题 01背包 $n$个物品,每个物品都有一个价值和体积,有一个容量为$V$的背包,最大可以得到的价值是多少 每个物品都有两种可能,选与不选 code 背包恰好装满 定义$dp[i]$表示$i$状态可达,初始化$dp$为$0$,代表不可达,$dp[0] = 1$,代表可达 状态转移方程$dp[i
阅读全文
posted @ 2020-02-08 19:23
hezongdnf
阅读(134)
推荐(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
阅读(158)
推荐(0)
摘要:
Problem Description "互不侵犯" 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 Analysis of ideas 把每一行的每一个状态用一个二进制数表示 定义dp[i][j
阅读全文
posted @ 2020-02-08 12:53
hezongdnf
阅读(158)
推荐(0)
posted @ 2020-02-08 09:44
hezongdnf
阅读(100)
推荐(0)
摘要:
Problem Description "没有上司的舞会" 某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职
阅读全文
posted @ 2020-02-08 08:10
hezongdnf
阅读(131)
推荐(0)
摘要:
Longest Increasing Subsequence 求最长上升子序列 定义$dp[i]$表示以$i$结尾的最长上升子序列的长度,O($n^2$) 定义$dp[i]$表示长度为$len$的上升子序列的第$i$个数,O($nlogn$) 求最长上升子序列的划分,等于求最长不上升子序列的长度 比
阅读全文
posted @ 2020-02-01 19:33
hezongdnf
阅读(198)
推荐(0)
摘要:
Problem Description "P1196 [NOI2002]银河英雄传说" Analysis of ideas Accepted code
阅读全文
posted @ 2020-01-30 09:41
hezongdnf
阅读(139)
推荐(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
阅读(127)
推荐(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
阅读(78)
推荐(0)
摘要:
可持久化线段树 静态区间第 $k$ 小 给定 $n$ 个整数构成的序列,将对于指定的闭区间查询其区间内的第 $k$ 小值。 权值线段树 权值线段树就是对一个值域上值的个数进行维护的线段树。 举个栗子,对于1,1,2,3,3,3,4,4。 在权值线段树上如何求第k小的值? 显然如果左子树的值大于k的话
阅读全文
posted @ 2020-01-25 16:48
hezongdnf
阅读(169)
推荐(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
阅读(280)
推荐(0)
摘要:
Problem Description https://www.luogu.com.cn/problem/P1972 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳, 因此,他的项链变得
阅读全文
posted @ 2020-01-25 09:40
hezongdnf
阅读(138)
推荐(0)
摘要:
树状数组 一般求解带修改的区间查询。比如带修改的区间和问题。 lowbit lowbit(x) 二进制下x最低位的1所对应的数,返回的是$2^k$。 比如8(1000)返回8,7(0111) 返回1。 比如说要更新2这个点,首先 更新,然后 更新,然后 更新... 更新7这个点,首先 更新,然后 更
阅读全文
posted @ 2020-01-25 09:39
hezongdnf
阅读(120)
推荐(0)
摘要:
树链剖分 轻重链剖分 利用dfs序,不停的跳链的顶端,直到跳到同一条重链上。
阅读全文
posted @ 2020-01-22 11:45
hezongdnf
阅读(133)
推荐(0)
摘要:
线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即
阅读全文
posted @ 2020-01-22 11:23
hezongdnf
阅读(144)
推荐(0)
posted @ 2020-01-15 14:20
hezongdnf
阅读(155)
推荐(0)
摘要:
KMP 求 匹配串$s2$ 在 模式串$s1$ 中出现的次数或者位置 首先求出模式串的$next$数组,表示以$i$结尾的子串可以匹配到的最大前缀长度。 匹配过程:移动模式串
阅读全文
posted @ 2020-01-15 13:06
hezongdnf
阅读(91)
推荐(0)
摘要:
manacher manacher可以在$O(n)$的时间内求解一个字符串的最长回文子串长度 朴素的做法: 枚举区间左右端点$l$,$r$,判断$[l,r]$是否回文,时间复杂度$O(n^3)$ 优化: 枚举回文中心,分别左右扩展,时间复杂度$O(n^2)$ 再优化 利用了回文的左右两边相等的性质
阅读全文
posted @ 2020-01-15 11:50
hezongdnf
阅读(105)
推荐(0)
摘要:
字符串hash 就是把一个字符串转换成整数 可以理解成有一个函数,输入一个字符串,输出一个整数 而我们要做的就是构造这么一个函数,使得不同的$x$对应不同的$y$ 首先我们选取一个$base$做为要转换的进制数,然后选取一个恰当的余数$M$(减少$hash$冲突) code 注意事项 不要把任意字符
阅读全文
posted @ 2020-01-15 10:33
hezongdnf
阅读(204)
推荐(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
阅读(145)
推荐(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
阅读(204)
推荐(0)
posted @ 2019-12-22 20:57
hezongdnf
阅读(167)
推荐(0)
摘要:
欧拉函数 计算与n互质的正整数个数 线性求eular 直接求euler 参考博客
阅读全文
posted @ 2019-12-22 20:47
hezongdnf
阅读(249)
推荐(0)
摘要:
欧拉筛法 每个合数仅被它的最小质因数筛去
阅读全文
posted @ 2019-12-21 16:08
hezongdnf
阅读(254)
推荐(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
阅读(159)
推荐(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
阅读(240)
推荐(0)