
数据结构与算法
文章平均质量分 93
分享数据结构和算法的详解
_Equinox
分享学习过程
展开
-
01分数规划,二分法,题目练习
那么 sum(t - w * m) >= 0,我们如何得到sum(w) >= W下最大的sum(t - w * m)?那么二分最大比率 m,有 sum(l) / sum(h) <= m,即 sum(l - m * h) <= 0。我们对于 节点i,j,以 l(i, j) - m * h(i, j) 为边权求最小生成树即可。l(i, j) 为 节点 i 和 j 之间的欧氏距离,h(i, j) 为二者高度差。sum(t) / sum(w) >= m,m 为二分最大值。考虑从推荐人向被推荐人连有向边。原创 2025-03-20 22:26:20 · 639 阅读 · 0 评论 -
康托展开,逆康托展开,原理分析,题目练习
对于 lemher[n - 1],它的贡献是 lemher[n - 1] * 0!对于 lemher[n - 2],它的贡献是 lemher[n - 2] * 1!n 个元素构成的排列的排名为 所有排列按字典序升序下的排名,比如 “1234” 的排名就是 1。一个直接的方法是,预处理阶乘,然后权值树状数组初始化所有数字权值为1,然后顺序根据排名填写。康托展开是指一种将自然数展开为数列的方法,类似于试填法 / 数位dp,从而求出排列的排名。加1 是因为我们试填算的是字典序严格小于该排列的排列数。原创 2025-03-08 00:12:39 · 627 阅读 · 0 评论 -
高斯消元法,加法,异或,同余方程组,原理分析,题目详解
高斯消元法是线代中非常基础的知识,在数据量较小的时候,可以用来求解 加法/异或/同余方程组,矩阵求逆。原创 2025-03-02 01:07:07 · 801 阅读 · 0 评论 -
可持久化线段树,原理分析,题目详解
可持久化线段树学习起来难度并不大,如果学过可持久化Trie,了解怎样复用旧版本的信息,只通过少量空间维护信息的修改,其实很容易理解可持久化线段树的原理。对于普通线段树,我们可能是维护序列,维护权值,但是可持久化之后,其实我们掌握的信息更多了,可以解决很多看起来只能暴力解决的问题。原创 2025-01-25 04:23:58 · 1109 阅读 · 0 评论 -
树上启发式合并
这只是人们的基于直觉,一般来说树越大往往越高,那么小树优先合并到大树上面,似乎可以使得树高较低一点,是一种启发式策略,所以称为。暴力思路:对每一个子节点进行一次遍历,每次遍历是O(N)的,因此总体时间复杂度O(N^2)处理完所有的轻儿子之后,对于重儿子我们根据欧拉序,累加整棵子树的颜色——O(N),并且保留。外,还有类似于树链剖分的做法,我们也做 轻重儿子 的划分,这样做事实上有很优秀的性质。轻儿子dfs计算答案,即dfs轻儿子后,轻儿子子树内的贡献不保存在 cnt[] 数组。轻儿子:除了重儿子之外的。原创 2025-01-01 17:15:39 · 676 阅读 · 0 评论 -
分块与莫队,分块的暴力美学
很多时候,对于维护区间的问题,想到要用某种数据结构,但是实现过于繁琐,或者遇到自己的知识盲区,在数据量以及题目时限较为客观的情况下,分块/莫队可以解决我们的问题,而且大多数时候代码简单,可以在赛时更快的取得AC。原创 2024-12-30 03:15:00 · 841 阅读 · 0 评论 -
跳表(SkipList) 原理分析,代码实现
对于维护有序结构,我们一般采用平衡树,如 AVL-Tree,RB-Tree,Splay,Treap 等。不过除了Treap,剩下那几个都挺复杂的。设计跳表(skip list),正是为了以另外一种简便直观的方式来完成对于有序集合的维护。int key;// 塔内向上第 i + 1 层 节点的 后继节点// 辅助数组,用于保存搜索路径上的位置,用于 插入 / 删除。原创 2024-11-04 19:20:31 · 1084 阅读 · 0 评论 -
树上差分详解
差分数组详解,一维二维差分-优快云博客LCA算法-倍增算法_lca倍增算法-优快云博客LCA算法-Tarjan算法_lca数组-优快云博客树链剖分——重链剖分,原理剖析,代码详解-优快云博客。原创 2024-09-27 20:26:05 · 1302 阅读 · 0 评论 -
树上前缀和详解
前缀和详解,朴素前缀和,前缀和变形,二维前缀和_前缀积-优快云博客LCA算法-倍增算法_lca倍增算法-优快云博客LCA算法-Tarjan算法_lca数组-优快云博客树链剖分——重链剖分,原理剖析,代码详解-优快云博客。原创 2024-09-27 16:31:29 · 639 阅读 · 0 评论 -
AC自动机详解,原理、优化分析,代码实现
填坑ing原创 2024-09-21 17:47:16 · 3665 阅读 · 0 评论 -
可持久化Trie详解,最大异或和,k大异或和
因为我们选取的后缀不能空,所以相当于 求 s[p] ^ s[p + 1] ^ …对于查询的部分,因为插入了0,所以 [l, r] 对应 版本/区间 [l + 1, r + 1]那么可以作为次大值的区间就是 [ll + 1, r - 1], [l + 1, rr - 1]因而,我们动态开点,在上一个版本的基础上,增加新的节点,就得到了新版本的Trie。然后我们枚举每个数,记 左边第一个大的为l,第二个为ll,同理有r,rr。因为查询区间是[l, r],所以左边界应该是root[l - 1]原创 2024-09-08 17:58:11 · 1770 阅读 · 0 评论 -
费用流,EK算法,Primal Dual 算法详解,OJ练习
搞定原创 2024-08-10 17:57:45 · 1769 阅读 · 0 评论 -
欧拉图,欧拉通路,欧拉回路,Hierholzer算法详解
小岛与河的两岸有七条桥连接。又是板子题, 由于没说是通路还是回路, 所以我们先按无向图找通路起点, 找不到就说明是回路, 随便找个起点就行。我们继续观察,发现我们把数字当作结点,每块骨牌当作边,问题就转化成了一个有n条边的图,我们要让每条边出现一次。由于每个结点出度入度相等都为k,且强连通,于是图中存在欧拉回路,我们求欧拉回路即可得答案。本题时间限制卡在0.25 second,但是点也就7个,边也就200条,还是跑得飞快的。和无向图欧拉回路不同的是,该题要求所得的回路要经过每条边正向反向各一次。原创 2024-08-04 21:58:45 · 3410 阅读 · 0 评论 -
树状数组详解
迭代一下原创 2024-07-31 16:50:05 · 807 阅读 · 0 评论 -
扩展KMP(Z函数)详解
对于一个长度为n的字符串S。z[i] 表示S与其后缀S[i,n]的**最长公共前缀(LCP)**的长度。国外一般将计算该数组的算法称为,而国内则称其为扩展 KMP。下面介绍O(N)时间复杂度内求解Zfunc的方法。Manacher(马拉车)算法详解,原理分析-优快云博客。原创 2024-07-27 18:05:27 · 593 阅读 · 0 评论 -
Manacher(马拉车)算法详解,原理分析
和Zfunc很像的一个算法原创 2024-07-24 20:37:36 · 1039 阅读 · 0 评论 -
字符串哈希详解,单hash,双hash,滚动哈希
关于 M,由于 M 我们要取一个比较大的质数,而出题人往往对一些比较经典的质数如1e9 + 7、998244353等构造一堆卡哈希的数据,所以我们往往通过捕获一个随机数,根据随机数往下再取质数,来尽可能避免被hack。,多了也没必要,字符串哈希往往是作为算法优化的某一步骤,如果双hash都能被卡,说明题目可以采取其它优化策略,如:AC自动机、SA等。显然,有时会存在多个不同的字符串哈希值相同的情况,我们通常的处理策略是巧妙设置p和M的值,往往取p为某个质数,M为某个大质数。但是,字符串哈希始终是有风险的。原创 2024-07-12 22:00:07 · 2661 阅读 · 0 评论 -
四边形不等式优化dp,超详细,概念定理详解证明,OJ练习
证明很繁琐,不过实际中打表猜测就行原创 2024-05-10 20:52:40 · 2099 阅读 · 0 评论 -
基础算法,贪心算法,贪心策略,OJ练习
基础算法,贪心算法原创 2024-05-07 13:52:51 · 1469 阅读 · 0 评论 -
组合数的四种求解方式,递推,快速幂,Lucas,高精度&线性筛
组合数学基础原创 2024-04-11 20:28:01 · 1687 阅读 · 0 评论 -
树链剖分——重链剖分,原理剖析,代码详解
重链剖分,也是第33次CSP认证压轴题原创 2024-04-08 20:03:07 · 1634 阅读 · 0 评论 -
最小生成树及扩展应用
最小生成树,最小瓶颈树,次小生成树原创 2024-04-04 17:19:45 · 2226 阅读 · 2 评论 -
最小割问题合集,最大权闭合图,最大密度子图,最小权点覆盖,最大权独立子图,OJ练习,代码详解
最小割问题,万字拆解超详细原创 2024-03-26 14:13:42 · 2046 阅读 · 0 评论 -
网络流建模之拆点,原理详解,OJ练习
一种常用的网络流建模方式原创 2024-03-15 23:25:02 · 1287 阅读 · 0 评论 -
多重背包详解,二进制优化、单调队列优化
迭代一下原创 2024-03-13 14:40:28 · 2696 阅读 · 0 评论 -
左偏树,可并堆详解,OJ练习,代码详解
左偏树能解决哪些问题原创 2024-03-10 16:50:11 · 1547 阅读 · 0 评论 -
Trie巧妙解决前后缀问题,3045. 统计前后缀下标对 II
Trie如何解决前后缀问题原创 2024-03-08 20:43:30 · 480 阅读 · 0 评论 -
状压dp详解,棋盘式、集合型,OJ详解
状压dp问题原创 2024-03-06 22:08:55 · 1959 阅读 · 0 评论 -
博弈论,NIM游戏,台阶型,集合型,SG函数,详解
博弈论,比较有趣的数学问题原创 2024-03-02 12:32:26 · 1652 阅读 · 1 评论 -
扩展欧几里得算法,费马小定理,乘法逆元,同余,裴蜀定理,基础数论内容
扩展欧几里得,基础数论原创 2024-02-27 22:53:41 · 1188 阅读 · 0 评论 -
CDQ分治详解,一维、二维、三维偏序
如何利用CDQ分治解决偏序问题原创 2024-02-26 17:43:38 · 3369 阅读 · 0 评论 -
并查集,扩展域并查集,带边权并查集详解,OJ练习,详细代码
一看就会系列原创 2024-02-06 01:10:19 · 2265 阅读 · 0 评论 -
多源汇最大流问题详解
网络流中一类非常容易理解的问题原创 2024-01-31 15:12:27 · 611 阅读 · 0 评论 -
有/无源汇-有上下界可行流/最大流/最小流,思路分析,算法实现,详细代码
最大流问题难在建模,所以要理解算法本质原创 2024-01-31 14:38:36 · 2066 阅读 · 0 评论 -
最大流解决二分图匹配问题
最大流解决二分图匹配简直不要太爽原创 2024-01-26 22:34:08 · 1623 阅读 · 0 评论 -
最大流-Dinic算法,原理详解,四大优化,详细代码
Dinic算法,很高效的最大流算法原创 2024-01-23 22:27:41 · 5583 阅读 · 0 评论 -
高精度运算合集,加减乘除,快速幂,详细代码,OJ链接
当longlong 发生溢出,阁下又该如何应对原创 2024-01-23 20:57:48 · 1180 阅读 · 0 评论 -
最大流—EK算法,流网络,残留网络,定理证明,详细代码
最大流,网络流中最基本问题原创 2024-01-20 21:14:49 · 2934 阅读 · 0 评论 -
DAG最小路径点覆盖,最小路径可重复覆盖,详解
有向无环图的最小覆盖问题原创 2024-01-16 18:17:27 · 1903 阅读 · 0 评论 -
二分图带权最大匹配-KM算法详解
找不到对象就降低期望(原创 2024-01-15 21:06:32 · 4009 阅读 · 1 评论