02 2023 档案

摘要:概述 最短路算法主要研究图上两点之间的最短路径问题。 事实上,许多问题都能转化为图来求解(图的本质就是点和边的集合,点是元素,边是元素之间的二元关系)。 所以最短路算法并不局限于“给出一张图,...”。 Floyd il void floyd(){ for(int k=1;k<=n;++k) for 阅读全文
posted @ 2023-02-28 13:44 未欣 阅读(30) 评论(0) 推荐(0) 编辑
摘要:概述 李超线段树是真正用于维护“线段”的线段树。 具体来说,李超线段树主要用于维护平面上线段(表现为给出定义域的一次函数)信息,通常为某处的最大/小值等。 实现原理 不妨以加线段,查询 l:x=k 与所有线段的交点的最大纵坐标为例。 众所周知,区间加等差数列,区间求和是容易的。然而区间取 $\m 阅读全文
posted @ 2023-02-22 17:07 未欣 阅读(66) 评论(0) 推荐(0) 编辑
摘要:钦定顺序特别重要,这不仅关乎到可能的去重,也关乎到简化问题。当然,错误的顺序可能会使问题更复杂(来自图上状压计数)。 如果觉得题目无从下手,考虑 DP(来自蜜蜂搬家)。 尝试着设计一个不管有多复杂的 DP 状态,然后一点一点把握题目中各个要素的关系,找到转移的途径。 考虑尽量简洁地描述题目要素之间的 阅读全文
posted @ 2023-02-21 08:51 未欣 阅读(36) 评论(0) 推荐(0) 编辑
摘要:概述 线段树优化通过线段树能快速区间取值和区间修改的特性,高效实现具有连续性的 dp 转移。 所谓的连续性可以是顺推的转移目标点为连续区间,也可以是逆推的转移出发点为连续区间,这一连续不一定必须是原数组下标这一维度上的。 效果一般为将 KD1D 的 dp 的 O(n) 的转移优化至 $O(\lo 阅读全文
posted @ 2023-02-10 16:53 未欣 阅读(66) 评论(0) 推荐(0) 编辑
摘要:线套线 规定使用 OI 坐标系。 (按我的代码习惯)竖着关于 1n 建一棵线段树,该线段树的每个节点都是一棵内层线段树,若该节点的管辖区间为 [L,R],则该内层线段树的管辖范围为 l,r 的节点的实际管辖矩形为 (L,l)(R,r)。 单点加,矩形查 修改:在外 阅读全文
posted @ 2023-02-09 17:58 未欣 阅读(30) 评论(0) 推荐(0) 编辑
摘要:(强制在线)单点修,区间第 k 小 首先有一个简单的序列分块+值域二分做法: 序列分块,对每个块建值域树状数组。 修改时暴力修改,O(log)。 询问时将两侧散块合并建一个虚块,然后在值域上二分,在每块内查询,O(Blog+numlog2)。 显然这是可平衡的,令 $B=num\ 阅读全文
posted @ 2023-02-09 16:25 未欣 阅读(26) 评论(0) 推荐(0) 编辑
摘要:竞赛图 姑且先挂载在这里。 性质 1:竞赛图缩点所得必为一条链,链上的重构点称为 Tier,Tier 1 是拓扑序最高的。 性质 2:出度最大的点必然在 Tier 1 中。 将所有点分为三类,第一类是出度最大的某个点 u,第二类是被 k 直接指向的点,第三类是剩余的点。 不妨设存在点 v 阅读全文
posted @ 2023-02-08 13:56 未欣 阅读(17) 评论(0) 推荐(0) 编辑
摘要:概述 自动机是一种对信号序列进行判定的数学模型。 信号序列:一串有序的信号,例如字符串。 判定:指输出为 0/1(在输入的信号序列可识别的前提下)。在 OI 中的自动机一般是广义的,即输出是任意的,具体来讲可能是在合法时输出对应方案的权值之类。 一般来讲,自动机可以抽象为一个有向图,点为状态,边 阅读全文
posted @ 2023-02-08 08:03 未欣 阅读(102) 评论(0) 推荐(0) 编辑
摘要:概述 有时,我们维护的数据结构是静态的,但题目却要求加/删。 如果题目满足元素互相独立,则考虑定期重构吧! 加入:将加入但还未整合到数据结构中的元素放入一个栈中,询问时暴力扫这个栈,到达阈值后将栈整合入数据结构,重新 build 一遍即可。 删除:考虑反演,我指的是算贡献(这要求贡献满足可减性,不过 阅读全文
posted @ 2023-02-07 18:03 未欣 阅读(100) 评论(1) 推荐(0) 编辑
摘要:概述 LCA(least common ancestor),最近公共祖先的英文缩写。 顾名思义,LCA 就是树上两个点最近的公共祖先,或者说两个点共同在的极小子树的根。 树上差分则是利用树本身的结合性(显然树不满足差分性,是点到根的链满足差分性)与 LCA 结合做的操作,譬如给某个路径上所有点 $+ 阅读全文
posted @ 2023-02-07 09:51 未欣 阅读(54) 评论(0) 推荐(0) 编辑
摘要:概述 长链剖分通过把树剖成尽量长的多个链,高效地解决...我也不知道解决啥(长剖优化 DP 的东西在 DP 优化那边)。 毕竟这个东西,不具备启发式分裂的复杂度。不过其还是有一点性质的,有时候确实会用到... 恰如轻重剖是按 siz 选重儿子,长剖是按 dep(这里指当前子树的最大深度)来选 阅读全文
posted @ 2023-02-07 09:45 未欣 阅读(25) 评论(0) 推荐(0) 编辑
摘要:概述 轻重链剖分通过将树剖分为若干条重链和它们之间相连的轻边,将树上路径问题转化成序列问题。 具体来讲,有很多树上路径问题本质上是把序列上的问题搬到了树上,此时我们可以进行轻重链剖分(后简记为轻重剖或重剖),将树上路径拆分为多条重链头尾相接,并通过能快速维护重链信息的数据结构来求解。 重剖方式如下: 阅读全文
posted @ 2023-02-07 09:39 未欣 阅读(30) 评论(0) 推荐(0) 编辑
摘要:前缀函数 前缀函数 πis1i 的最大相同真前后缀长度。 如无特别说明,本文中所有字符串下标从 1 开始,长度为 n。 考虑怎么求前缀函数。 首先肯定能想到暴力的 O(n3) 枚举 i,len,j (子串长度,匹配长度,然后一位位验证)。但太蠢 阅读全文
posted @ 2023-02-06 11:20 未欣 阅读(75) 评论(0) 推荐(0) 编辑
摘要:概述 坐,都坐。我知道各位都很激动,但这个缩写的全称是 Aho-Corasick automaton,AC 是两位发明者的姓氏,automaton:自动机。 AC 自动机通过将 trie 的结构和 KMP 的思想结合起来,利用 trie 的结构存储多模式串(或者说构建对应的图论模型),然后将 KMP 阅读全文
posted @ 2023-02-02 17:32 未欣 阅读(154) 评论(0) 推荐(0) 编辑
摘要:字符串哈希 字典树 前缀函数与 KMP AC 自动机 Z 函数(扩展 KMP) manacher 算法 后缀数组 阅读全文
posted @ 2023-02-02 16:50 未欣 阅读(32) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示