大杂烩
游走在记忆长河之中,弥梦离默默捡拾那些被遗忘的片段。她守护每一个人心中的珍贵记忆,她会替他们记得,让记忆在时光中永存。
应该没人会发现海报和摘要对应的弥梦离(璃)不是一个形态的吧?
不知道自己什么时候就似了,所以提前写一下,能留作遗产吗(?)
写得会比较杂,当做一些
代码模块化、通用性、兼容性固然很重要,但弄巧成拙了就不划算了。
数据结构
- 势能线段树,并查集维护跳跃的关键在于无法进一步更新后就停止,同时要求更新次数不会太多,常见的一般为
次。- 区间开根 luogu P4145 上帝造题的七分钟 2 / 花神游历各国 ,区间变为自己的约数个数 CF920F SUM and REPLACE
- 规约出无法继续更新的条件 luogu P7492 [传智杯 #3 决赛] 序列 | luogu P9989 [Ynoi Easy Round 2023] TEST_69
- 修改次数是一个常数且不是很大 多校A层冲刺NOIP2024模拟赛08 T3 C. 战场模拟器 (simulator) | 北京建筑大学2024年程序设计竞赛(同步赛) A 寿命修改
- 定期重构
- 块状链表 LibreOJ 6282. 数列分块入门 6
- 可持久化数据结构空间发展度错误时通过定期重构减少空间开销。
- luogu P5586 [P5350] 序列 (加强版) 复制时不能连带拷贝树的形态,可以按照子树大小随机合并。
- CF757G Can Bash Save the Day?
- 根号分治
- luogu P5309 [Ynoi2011] 初始化 统计
中 的部分,不妨按照 将原序列划分成若干块,维护块内前缀和即可。
- luogu P5309 [Ynoi2011] 初始化 统计
- 分块维护凸包的平移 luogu P7028 [NWRRC2017] Joker
- 普通莫队套
set
维护前驱后继可以用只减不加莫队套链表优化时间复杂度 luogu P8078 [WC2022] 秃子酋长 - 通过猫树、猫树分治减少询问时的信息合并次数。
- 维护线性基 CF1100F Ivan and Burgers
- 维护背包 luogu P6240 好吃的题目
- 操作树在一定程度上可以替代可持久化结构,常需要离线下来统一处理询问。
- 询问一段区间内满足限制条件的子区间个数时通常情况下考虑线段树维护历史版本和;数列分治处理全局询问比较方便,但当处理某一段区间时需要其他数据结构辅助,难写程度不亚于线段树维护历史版本和。
- 树上启发式合并和线段树合并都常用于维护树上数颜色问题,应视实际情况来进行使用,其中前者能够维护的信息更为多样。
- 操作序列分块/根号重构
- 对一个长度为
的序列进行 次区间推平操作,左侧第一个与自己同色点的位置的改变次数是 级别的,可以考虑珂朵莉树维护相同颜色的一段区间。 - 扫描线不止局限于可差分信息,只需要能够支持快速地得到一段范围内的答案即可。常见的形式是 2-Side 矩形往往简化了处理方式。
- 区间数颜色问题可以记录每个元素最后一次出现的位置 luogu P7880 [Ynoi2006] rldcot
- 区间推平操作可以考虑维护最后一次被修改的时间戳。
- CDQ 分治处理修改时如果不相互独立则必须保证按照时间顺序进行,这一点在优化 DP 中显得十分重要。
- 数据结构维护某个函数和
取 冲刺CSP联训模拟2 P296. 星空遗迹 。 - 启发式分裂的时间复杂度为
,证明考虑建出笛卡尔树。如果担心算重的话,可以一边取等一边不取等。 - 顺延珂朵莉树的思路,将相同状态的缩成一个节点,需要使用时再进行分裂。
- 如果合并两个区间信息时不要求必须无交才能合并,可以将原倍增拼区间换成 ST 表从而省去一个
。- luogu P3295 [SCOI2016] 萌萌哒 需要区间并查集合并,对长度为
的区间建并查集。
- luogu P3295 [SCOI2016] 萌萌哒 需要区间并查集合并,对长度为
- 维护区间信息考虑线段树 2025多校冲刺省选模拟赛9 T1 A. 鸬鹚
- 十字链表
- 单
求解三维偏序- 设
,考虑 中点对的贡献。 - 对于一组三维偏序,其被计算了三遍;对于一组只有两维满足偏序,其被计算了一遍;对于一组只有一维或零维满足偏序,其没有被计算到。
- 而若
构成一组三维偏序,则 构成零维偏序;若 构成一组二维偏序,则 构成一维偏序。即满足三维偏序和只有二维偏序的数对之和恰好是所有数对的一半 。 - 故最后
即为所求。
- 设
- 整块间建
表维护区间有交也可合并的信息减小时空复杂度。 - 莫队移动左右指针本质上是利用了能够快速得到区间扩展后的信息。
图论
- Floyd 的本质
- luogu P2966 [USACO09DEC] Cow Toll Paths G 第一维
表示经过中转点的编号不超过 。排序后转移过程中钦定 是最大的,而 同理。 - [ABC375F] Road Blocked 删边最短路
- luogu P2966 [USACO09DEC] Cow Toll Paths G 第一维
- 求长度为某一定值的路径计数,可以考虑类似 Floyd 转移。
- 多源最短路
- 只连接必要的边减小边的规模,必要时可以考虑 boruvka 。
- 图论建模
- 每个点的指向或被指向位置唯一时,可以考虑基环树。
- 差分约束
- 网络流
- 最大流、最小割对应了一种实际的方案。
- 二分图、三分图最大匹配
- 二分图最大带权匹配
- 区间选择模型
- 将最大流作为合法的限制,寻找最大费用/最小费用
- 距离限制模型
- 最大权闭合子图
- 线性规划
- 欧拉路径/欧拉回路
- 用
个变量 刻画 的值的范围 [ABC277Ex] Constrained Sums - [ARC069F] Flags 扩展至
维 多校A层冲刺NOIP2024模拟赛27终结篇 T4 D. 【模板】平面最近点对
- 用
- 将时间作为边权 CF1706E Qpwoeirut and Vertices
- 经典转化
- 点权转边权
- 边权转点权
- 若点权只能被统计一次,考虑建虚点,在网络流中使用较为频繁。
- 结论
- 设点集
的直径端点为 ,点集 的直径端点为 ,则 的直径端点一定是 中的两个。- 暑假集训CSP提高模拟22 T2 P265. 连通块
- luogu P6845 [CEOI 2019] Dynamic Diameter 线段树维护 DFS 序上区间内点集的直径
- 对于树上
个关键点 ,将其按照 DFS 序升序排序后构成的虚树大小等于 ,边数等于点数加一。- luogu P5327 [ZJOI2019] 语言 | 025多校冲刺省选模拟赛2 T2 B. awa 将两部分分开维护以减少线段树
pushup
合并信息时查询 导致的常数。
- luogu P5327 [ZJOI2019] 语言 | 025多校冲刺省选模拟赛2 T2 B. awa 将两部分分开维护以减少线段树
- 树上单点加、根链查询可以转化为子树加、单点查询,颠倒后同理。
- 区间
的 等于 中 序最小和最大的两个点的 CF1062E Company - 最大团等于补图的最大独立集 Gym103428L shake hands
- 连通块数等于边数减点数。
- 设点集
- 树链的并
- 树的完美匹配可以从上往下或从下往上贪心做。
- 树的拓扑序计数
- 优化建图
- 存在多种类别时可以考虑对每种类别建虚点转移。
- UOJ 605. 【UER #9】知识网络
- luogu P5304 [GXOI/GZOI2019] 旅行者 新建虚点
指向所有源点,虚点 被所有汇点指向。
- 某个点向区间连边时,可以考虑分治建虚链,线段树/树状数组/分块/ST 表/主席树优化建图(基本写法大差不差);如果是前后缀的形式的话,也可以考虑前后缀优化建图。
- 存在多种类别时可以考虑对每种类别建虚点转移。
- 考虑环套环的拼接对答案的影响 luogu P4151 [WC2011] 最大XOR和路径
- 经经过边的数量加入状态中 多校A层冲刺NOIP2024模拟赛21 T1 A. 送信卒
- 根据深度拆幂次的贡献
- 2025多校冲刺省选模拟赛9 T2 B.雪雀 分治优化多源最短路的转移。
- 设立关键点,预处理关键点之间的信息,类似树上分块维护 luogu P3603 雪辉
- LCT
access
均摊:每次修改根到某个点的树链,每次经过的连续颜色端数是均摊 的,所以可以在access
的同时维护连续段的信息 2025多校冲刺省选模拟赛1 T3 C. 有根树(tree) - 当需要同时维护儿子信息和父亲信息时,不妨考虑数据结构统一维护儿子信息,单独计算父亲信息。
字符串
- 哈希
- 双哈希 [ABC339F] Product Equality
- 可以维护整段的信息,每一组分别考虑。
- 合理地映射信息 luogu P5972 [PA 2019] Desant
- 哈希判断是否相等,同时进行二分判断大小 CF464E The Classic Problem
- 异或哈希 2022牛客OI赛前集训营-提高组(第四场) A 博弈
- 和哈希 [ABC367F] Rearrange Query
- 树哈希(可以换根处理出以每个点为根时的哈希值) luogu P4323 [JSOI2016] 独特的树叶
- Border,循环节,fail 树相关理论等重学的时候再来写。
- 后缀数组中
相关应用- 将子串转化为某个后缀的一段前缀。
- 某个子串
在 个子串里出现过等价于有连续 个后缀以这个子串作为 ,即 。 - 对于
和 ,若 ,则 ;否则 。 - 将
转化成区间上对 的取 后,按照 从大到小合并。
- luogu P3449 [POI 2006] PAL-Palindromes
拼接后是回文串当且仅当 ,哈希移项后判断。 - luogu P1117 [NOI2016] 优秀的拆分 枚举长度,设立关键点,统计经过两个关键点的贡献
- 将二进制下每一位
的变化看做 01Trie 上左右子树的翻转。- CF1553H XOR and Distance
- 从低往高建 01Trie 支持全局
- luogu P6018 [Ynoi2010] Fusion tree
- luogu P6623 [省选联考 2020 A 卷] 树 Trie 合并或树上差分维护
动态规划
- 费用提前计算
- 代价/贡献延后处理
- 可行的转移位置很少时,可以将每个数的转移位置单独转移。
- 对子集按位 DP HZOJ 368. 稳稳的参天大树
- 根号分治求解分拆数的扩展
- 优化状态设计
- 交换值域定义域
- 交换背包的体积和价值
- 某一限制条件下能否实现转化为实现/不实现的限制条件上、下界
- 多余的状态可以存储在一个状态里。
- 冗余条件直接删去
- 发掘其他性质
- luogu P9759 [COCI 2022/2023 #3] Bomboni 将原状态设计中
一维改为与 的 。 - luogu P6400 [COI 2008] UMNOZAK 位数积只可能含有
作为质因子,其指数最大分别为 ,在 范围内仅有 个数。
- luogu P9759 [COCI 2022/2023 #3] Bomboni 将原状态设计中
- 等价类的后续决策相同,可以一起考虑。
- 交换值域定义域
- 若干个区间只有相离或包含关系,可以转化为树形关系。
- 数据结构优化 DP
- 如果相邻两层状态间能容易地维护增量的继承关系,可以考虑线段树优化 DP ,形似网格图上的转移居多。
- 预设性 DP 的主要思路是枚举填哪个数,考虑新增段、连接段的贡献。
- 不要把换根 DP 的思路仅仅局限于维护某一类信息。
- 笛卡尔树上跑 DP
- Slope Trick 维护连续的一次折线函数(常含有绝对值)。
- 贪心和 DP 调整相结合 luogu P8392 [BalticOI 2022] Uplifting Excursion (Day1)
背包在对容量取模后符合决策单调性 LibreOJ 6039. 「雅礼集训 2017 Day5」珠宝 /「NAIPC2016」Jewel Thief- luogu P3959 [NOIP 2017 提高组] 宝藏 按照深度扩展,状压 DP 维护
数学
- 数形结合
- 翻折对称
- 将点放到二维平面上考虑
- [ABC341G] Highest Ratio 将
看做二维平面上的点后维护斜率单调的单调栈。
- [ABC341G] Highest Ratio 将
- 当贡献和位数有关时,可以考虑按位转移。
- luogu P3216 [HNOI2011] 数学作业 | [ABC129F] Takahashi's Basics in Education and Learning ,建出
个矩阵分开转移,注意会炸long long
。
- luogu P3216 [HNOI2011] 数学作业 | [ABC129F] Takahashi's Basics in Education and Learning ,建出
- 广义矩阵乘法
- 拆绝对值,
,向下取整,取模时考虑每一部分什么时候的贡献取到。 初三奥赛模拟测试4 T3 渡尘 | luogu P9750 [CSP-J 2023] 一元二次方程- 形如
的不等式时因为 可以化简为 。 - 转化贡献取到的条件
- 将向下取整拆成减余数的形式 luogu P6638 「JYLOI Round 1」常规
- 二项式反演,至少、至多与恰好之间的转化
- 详细内容等重学的时候再写
- 冲刺CSP联训模拟2 T2 P295. 工地难题
- 计数、概率、期望之间的转化
- 二项式定理展开维护幂次的期望
- 挑选合适的质数使得其在取模后仍等于原数。
- 当对模数进行质因数分解分别求解后 CRT 合并。
- 范德蒙德卷积合并组合数
- 基础博弈等学的时候再来写
- 杂项
- 方差等于平方的平均数减平均数的平方
- 阶乘增长速度极快
- 等比数列
- 排序不等式
- 使用
来缩小值域。 是积形函数。- 辗转相除的扩展
- 同余系的应用
。 在固定某个端点的情况下至多变换 遍。- 若
,则有 。
- 正难则反
- 将统计约数个数转化为统计倍数个数 luogu P3935 Calculating
- 预处理转移矩阵的若干次幂在矩阵快速幂时减少复杂度
- 树上高斯消元:基本思路是尝试将状态转移方程写作
的形式后手动解出(代入消元) 的值。
计算几何
- 旋转坐标系,视情况交换曼哈顿距离与切比雪夫距离。
- 曼哈顿转切比雪夫
- 点的变换:
- 距离的变换:
- luogu P10633 BZOJ2989 数列/BZOJ4170 极光
- 点的变换:
- 切比雪夫转曼哈顿
- 曼哈顿转切比雪夫
杂项
对应的本质不同的 至多只有 种。- 借此证明暴力求
的时间复杂度 CF940F Machine Learning 。 - 尝试考虑对于同一种
一起进行考虑 luogu P10114 [LMXOI Round 1] Size | 牛客 NC275719 自爆机器人 - 辅助根号分治/分块
- 借此证明暴力求
- 数据点分治
- 数据范围明显有提示 多校A层冲刺NOIP2024模拟赛04 T4 D. 表达式
- 总和整除长度可以转化成每个数减去平均数后等于
2024初三集训模拟测试1 T3 score - 构造合适的模型简化问题
- [ABC341E] Alternating String 一个串是
交替的,当且仅当任意相邻两位不相等。构造 。 - luogu P3226 [HNOI2012] 集合选数 构造一个状压能维护的四个方向不能同时选择的矩阵。
- [ABC341E] Alternating String 一个串是
- 如果能够快速地合并一个区间和多个区间的信息,可以考虑双向搜索。
- 当满足的限制条件是一段前后缀的形式(满足一定的单调性),可以通过分界点找到答案。
- 合理地进行分组简化处理
- 按照值域大小或其他评判标准分组考虑组内部的贡献和组间的贡献。
- 二进制分组,一部分正确性来自于答案来源下标一定存在不相等的一位(即一定存在一种划分方案使其不在同一个集合)。
- 暑假集训CSP提高模拟19 T2 P160. 那一天她离我而去 加速 Dijkstra 求解经过定点的最小环
- luogu P5304 [GXOI/GZOI2019] 旅行者
- 按照奇偶性分组建立二分图
- luogu P5038 [SCOI2012] 奇怪的游戏 按照横纵坐标之和的奇偶性分组
- luogu P4068 [SDOI2016] 数字配对 按照质因数个数奇偶性分组
- luogu P5030 长脖子鹿放置 按照横坐标奇偶性分组
- 鞅的停时定理
- 正视部分随机化做法的正确性
- luogu P2048 [NOI2010] 超级钢琴 | luogu P5283 [十二省联考 2019] 异或粽子 在加入必要的决策后在统计贡献时分裂出新的决策,进一步扩展得到 Super Piano's Trick 。
- 如果代价函数较为简便,可以考虑操作序列上的临项交换,略去时间复杂度较劣的网格最短路 DP 转移。
- 桶如果下标移位可以接受的话,不要使用
map
,凭空产生的 可能会成为复杂度瓶颈。 - 简化问题的限制,尝试进行合并。
- 缩小/扩大某个数对答案贡献的区间
- luogu P11364 [NOIP2024] 树上查询
- luogu P7880 [Ynoi2006] rldcot 树上启发式合并维护包含
的极短区间(DFS 序上的前驱、后继节点) - 2025省选模拟13 T1 P1025. Easy Problem 处理出每个数作为中位数的极短区间
- 启发式分裂
- 将限制条件中的区间相交/包含关系拆分成若干段。
- 全局考虑某一贡献不太可做(或操作顺序对贡献影响较大)时可以从个体单独考虑。
- 当直接开
bitset
的空间复杂度较大且维护信息相互独立时可以考虑对bitset
分块维护,以时间换空间。 - 优化枚举顺序,平衡时间复杂度。
- 差分与前缀和的转化
- luogu P11620 [Ynoi Easy Round 2025] TEST_34 将区间修改差分成单点修改后查询单点和区间构成的线性基
- luogu P7294 [USACO21JAN] Minimum Cost Paths P
- 先让
再考虑每列的转移 。设差分数组 。 - 初始时有
,线段树维护全局加一次函数。 - 进一步观察到
单调不降,当前列对 取 转化成后缀覆盖。 - 详细做法详见 P7294 [USACO21JAN] Minimum Cost Paths P 题解 。
- 先让
- 覆盖操作后的加法转化成新的覆盖 luogu P4314 CPU 监控
- 逆序对扩展
本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/18724962,未经允许严禁转载。
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具