大杂烩

游走在记忆长河之中,弥梦离默默捡拾那些被遗忘的片段。她守护每一个人心中的珍贵记忆,她会替他们记得,让记忆在时光中永存。
应该没人会发现海报和摘要对应的弥梦离(璃)不是一个形态的吧?
不知道自己什么时候就似了,所以提前写一下,能留作遗产吗(?)
写得会比较杂,当做一些 \(Trick\) 的题单也好。
代码模块化、通用性、兼容性固然很重要,但弄巧成拙了就不划算了。
数据结构
- 势能线段树,并查集维护跳跃的关键在于无法进一步更新后就停止,同时要求更新次数不会太多,常见的一般为 \(\log V\) 次。
- 区间开根 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] 序列 (加强版) | HDU6087 Rikka with Sequence 复制时不能连带拷贝树的形态,可以按照子树大小随机合并。
- CF757G Can Bash Save the Day?
- 根号分治
- luogu P5309 [Ynoi2011] 初始化 统计 \([l,r]\) 中 \(\le \sqrt{n}\) 的部分,不妨按照 \(x\) 将原序列划分成若干块,维护块内前缀和即可。
- luogu P7710 [Ynoi2077] stdmxeypz 整块根号分治时 \(\ge \sqrt{n}\) 的部分直接差分,询问时再暴力扫一遍
- 分块维护凸包的平移 luogu P7028 [NWRRC2017] Joker
- 当修改与查询次数极不平衡时,可以使用分块平衡复杂度。
- 普通莫队套
set维护前驱后继可以用只减不加莫队套链表优化时间复杂度 luogu P8078 [WC2022] 秃子酋长 - 通过猫树、猫树分治减少询问时的信息合并次数。
- 维护线性基 CF1100F Ivan and Burgers
- 维护背包 luogu P6240 好吃的题目
- 操作树在一定程度上可以替代可持久化结构,常需要离线下来统一处理询问。
- 询问一段区间内满足限制条件的子区间个数时通常情况下考虑线段树维护历史版本和;数列分治处理全局询问比较方便,但当处理某一段区间时需要其他数据结构辅助,难写程度不亚于线段树维护历史版本和。
- CF997E Good Subsegments 维护 \(\max-\min-r+l \ge 0\) 的最小值及出现次数
- 计蒜客 T3729 MEX
- 多校A层冲刺NOIP2024模拟赛09 T4 D. 区间 (interval)
- luogu P8868 [NOIP2022] 比赛 | luogu P6406 [COCI 2014/2015 #2] Norma
- luogu P9990 [Ynoi Easy Round 2023] TEST_90
- 手动维护历史版本和 luogu P8421 [THUPC2022 决赛] rsraogps
- 树上启发式合并和线段树合并都常用于维护树上数颜色问题,应视实际情况来进行使用,其中前者能够维护的信息更为多样。
- 操作序列分块/根号重构的重要一步是考虑分出的散块的操作对先前操作的影响。
- 对一个长度为 \(n\) 的序列进行 \(m\) 次区间推平操作,左侧第一个与自己同色点的位置的改变次数是 \(O(n+m)\) 级别的,可以考虑珂朵莉树维护相同颜色的一段区间。
- luogu P4690 [Ynoi2016] 镜中的昆虫
- luogu P11731 [集训队互测 2015] 最大异或和 颜色段数量的改变对应了差分数组的改变
- 扫描线不止局限于可差分信息,只需要能够支持快速地得到一段范围内的答案即可。常见的形式是 2-Side 矩形往往简化了处理方式。
- 区间数颜色/信息并问题可以记录每个元素最后一次出现的位置 luogu P7880 [Ynoi2006] rldcot | luogu P6783 [Ynoi2008] rrusq
- 区间推平操作可以考虑维护最后一次被修改的时间戳。
- CDQ 分治处理修改时如果不相互独立则必须保证按照时间顺序进行,这一点在优化 DP 中显得十分重要。
- 数据结构维护某个函数和 \(1/0\) 取 \(\max\) 冲刺CSP联训模拟2 P296. 星空遗迹 。
- 启发式分裂的时间复杂度为 \(O(n \log n)\),证明考虑建出笛卡尔树。如果担心算重的话,可以一边取等一边不取等。
- 顺延珂朵莉树的思路,将相同状态的缩成一个节点,需要使用时再进行分裂。
- 如果合并两个区间信息时不要求必须无交才能合并,可以将原倍增拼区间换成 ST 表从而省去一个 \(\log\) 。
- luogu P3295 [SCOI2016] 萌萌哒 需要区间并查集合并,对长度为 \(2^{k}\) 的区间建并查集。
- 线段树应用扩展
- 数据结构维护一维,手动维护另外一维。
- 2025多校冲刺省选模拟赛9 T1 A. 鸬鹚 需要当前弧优化
- 兔队线段树,核心思想是构造一个函数使得能快速处理仅考虑左区间对右区间的贡献时右区间的答案。
- 数据结构维护一维,手动维护另外一维。
- 十字链表
- 单 \(\log\) 求解三维偏序 luogu P11197 [COTS 2021] 赛狗游戏 Tiket
- 设 \(S_{1}=\{ (i,j) | a_{i}<a_{j} \},S_{2}=\{ (i,j) | b_{i}<b_{j} \},S_{3}=\{ (i,j) | c_{i}<c_{j} \}\) ,考虑 \(|S_{1} \bigcap S_{2}|+|S_{1} \bigcap S_{3}|+|S_{2} \bigcap S_{3}|\) 中点对的贡献。
- 对于一组三维偏序,其被计算了三遍;对于一组只有两维满足偏序,其被计算了一遍;对于一组只有一维或零维满足偏序,其没有被计算到。
- 而若 \((i,j)\) 构成一组三维偏序,则 \((j,i)\) 构成零维偏序;若 \((i,j)\) 构成一组二维偏序,则 \((j,i)\) 构成一维偏序。即满足三维偏序和只有二维偏序的数对之和恰好是所有数对的一半 \(\frac{n(n-1)}{2}\) 。
- 故最后 \(\frac{1}{2}(|S_{1} \bigcap S_{2}|+|S_{1} \bigcap S_{3}|+|S_{2} \bigcap S_{3}|-\frac{n(n-1)}{2})\) 即为所求。
- 整块间建 \(ST\) 表维护区间有交也可合并的信息减小时空复杂度。
- 莫队移动左右指针本质上是利用了能够快速得到区间扩展后的信息,其中对询问分块是保证指针暴力移动复杂度正确的一个重要部分。
- luogu P5268 [SNOI2017] 一个简单的询问
- CF868F Yet Another Minimization Problem | luogu P5574 [CmdOI2019] 任务分配问题 由决策单调性分治过程中决策范围不断减小来保证指针移动次数不会很多
- 给类似的操作给予特定的函数意义,方便使用数据结构维护。
- UOJ 164. 【清华集训2015】V 将每个操作转化成 \(y \gets \max(y+a,b)\) 的形式后吉司机线段树维护。
- 区间赋值等差数列(首项是 \(b\) ,公差为 \(k\))
- 柯朵莉树将每段等差数列看作一个颜色段,并记录首项和公差。
- 当 \(k=1\) 时且可以预先令 \(a_{i} \gets a_{i}-i\) 后就转化成了区间覆盖 [ABC371F] Takahashi in Narrow Road | luogu P11833 [省选联考 2025] 推箱子
图论
- Floyd 的本质
- luogu P2966 [USACO09DEC] Cow Toll Paths G 第一维 \(k\) 表示经过中转点的编号不超过 \(k\) 。排序后转移过程中钦定 \(k\) 是最大的,而 \(i,j\) 同理。
- [ABC375F] Road Blocked 删边最短路
- 求长度为某一定值的路径计数,可以考虑类似 Floyd 转移。
- 多源最短路
- CF1301F Super Jaber
- CF1320E Treeland and Viruses 多源 Dijkstra 转移过程中记录转移轮数、当前轮数剩余时间、距离
- 2025多校冲刺省选模拟赛9 T2 B.雪雀 分治优化多源最短路的转移。
- 减小边的规模来保证空间开销
- 只连接必要的边减小边的规模,求解最小生成树时可以考虑 Boruvka。
- 当连边具有规律性时可以考虑手动模拟。
- luogu P8060 [POI2003] Sums
- luogu P5471 [NOI2019] 弹跳 可扩展至线段树优化建图
- 图论建模
- 每个点的指向或被指向位置唯一时,可以考虑基环树。
- HDU6403 Card Game
- CF1967D Long Way to be Non-decreasing 至多走 \(mid\) 步转化为走 \(mid\) 步是否能到达。
- 多校A层冲刺NOIP2024模拟赛03 T4 D. 量子隧穿问题(experiment)
- 差分约束
- 二分图、三分图
- CF1140F Extending Set of Points 完全二分图 | AT_agc006_f [AGC006F] Blackout 完全三分图
- 将 \((x,y) \in S\) 看做存在 \(x \to y\) 这条有向边。
- CF1140F Extending Set of Points 完全二分图 | AT_agc006_f [AGC006F] Blackout 完全三分图
- 网络流
- 最大流、最小割对应了一种实际的方案。
- 二分图、三分图最大匹配
- 二分图最大带权匹配
- 区间选择模型
- 将最大流作为合法的限制,寻找最大费用/最小费用
- 距离限制模型
- 最大权闭合子图
- 线性规划
- 欧拉路径/欧拉回路
- \(2-SAT\)
- 用 \(m+2\) 个变量 \(x_{i,j}=[a_{i} \ge j],j \in [0,m+1]\) 刻画 \(a_{i}\) 的值的范围 [ABC277Ex] Constrained Sums
- [ARC069F] Flags 扩展至 \(k\) 维 多校A层冲刺NOIP2024模拟赛27终结篇 T4 D. 【模板】平面最近点对
- Kruskal 重构树
- 将时间作为边权 CF1706E Qpwoeirut and Vertices
- 每个点的指向或被指向位置唯一时,可以考虑基环树。
- 经典转化
- 点权转边权
- 边权转点权
- 若点权只能被统计一次,考虑建虚点,在网络流中使用较为频繁。
- 结论
- 设点集 \(A\) 的直径端点为 \(u_{1},v_{1}\) ,点集 \(B\) 的直径端点为 \(u_{2},v_{2}\) ,则 \(A \bigcup B\) 的直径端点一定是 \(u_{1},v_{1},u_{2},v_{2}\) 中的两个。
- 暑假集训CSP提高模拟22 T2 P265. 连通块
- luogu P6845 [CEOI 2019] Dynamic Diameter 线段树维护 DFS 序上区间内点集的直径
- 对于树上 \(k\) 个关键点 \(a_{i}\),将其按照 DFS 序升序排序后构成的虚树大小等于 \(\frac{dis_{a_{k},a_{1}}+\sum\limits_{i=1}^{k-1}dis_{a_{i},a_{i+1}}}{2}\) ,边数等于点数加一。
- luogu P5327 [ZJOI2019] 语言 | 025多校冲刺省选模拟赛2 T2 B. awa 将两部分分开维护以减少线段树
pushup合并信息时查询 \(\operatorname{LCA}\) 导致的常数。
- luogu P5327 [ZJOI2019] 语言 | 025多校冲刺省选模拟赛2 T2 B. awa 将两部分分开维护以减少线段树
- 树上单点加、根链查询可以转化为子树加、单点查询,颠倒后同理。
- 区间 \([l,r]\) 的 \(\operatorname{LCA}\) 等于 \([l,r]\) 中 \(DFS\) 序最小和最大的两个点的 \(\operatorname{LCA}\) CF1062E Company
- 最大团等于补图的最大独立集 Gym103428L shake hands
- 连通块数等于边数减点数。
- 设点集 \(A\) 的直径端点为 \(u_{1},v_{1}\) ,点集 \(B\) 的直径端点为 \(u_{2},v_{2}\) ,则 \(A \bigcup B\) 的直径端点一定是 \(u_{1},v_{1},u_{2},v_{2}\) 中的两个。
- 树链的并
- 树的完美匹配可以从上往下或从下往上贪心做。
- 树的拓扑序计数
- 优化建图
- 存在多种类别时可以考虑对每种类别建虚点转移。
- UOJ 605. 【UER #9】知识网络
- luogu P5304 [GXOI/GZOI2019] 旅行者 新建虚点 \(s\) 指向所有源点,虚点 \(t\) 被所有汇点指向。
- 某个点向区间连边时,可以考虑分治建虚链,线段树/树状数组/分块/ST 表/主席树优化建图(基本写法大差不差);如果是前后缀的形式的话,也可以考虑前后缀优化建图。
- 存在多种类别时可以考虑对每种类别建虚点转移。
- 考虑环套环的拼接对答案的影响 luogu P4151 [WC2011] 最大XOR和路径
- 将经过边的数量加入状态中 多校A层冲刺NOIP2024模拟赛21 T1 A. 送信卒
- 根据深度拆幂次的贡献
- 设立关键点,预处理关键点之间的信息,类似树上分块维护 luogu P3603 雪辉
- LCT
access均摊:每次修改根到某个点的树链,每次经过的连续颜色端数是均摊 \(O(n \log n)\) 的,所以可以在access的同时维护连续段的信息 2025多校冲刺省选模拟赛1 T3 C. 有根树(tree) - 当需要同时维护儿子信息和父亲信息时,不妨考虑数据结构统一维护儿子信息,单独计算父亲信息。
- 维护树上 \((u,v)\) 两点间的信息从每个点贡献的区间考虑时,可以单独考虑 \(\operatorname{LCA}\) 处的贡献来减少不必要的分讨。
字符串
- 哈希
- 双哈希 [ABC339F] Product Equality
- 可以维护整段的信息,每一组分别考虑。
- 合理地映射信息 luogu P5972 [PA 2019] Desant
- 哈希判断是否相等,同时进行二分判断大小 CF464E The Classic Problem
- 异或哈希
- 2022牛客OI赛前集训营-提高组(第四场) A 博弈 桶维护树上前缀和个数
- 求删边后图连通性的一个方法是给非树边赋随机权,树边的权值为覆盖它的返祖边的权值的异或和,然后线性基判定是否同时出现。
- 和哈希 [ABC367F] Rearrange Query
- 树哈希(可以换根处理出以每个点为根时的哈希值) luogu P4323 [JSOI2016] 独特的树叶
- Border,循环节,fail 树相关理论等重学的时候再来写。
- 后缀数组中 \(height\) 相关应用
- 将子串转化为某个后缀的一段前缀。
- 某个子串 \(s\) 在 \(k\) 个子串里出现过等价于有连续 \(k\) 个后缀以这个子串作为 \(\operatorname{LCP}\) ,即 \(\min\limits_{i=r-(k-1)}^{r} \{ height_{i} \} \ge s\) 。
- 对于 \(s_{a \sim b}\) 和 \(s_{c \sim d}\) ,若 \(LCP(s_{a \sim |s|},s_{c \sim |s|}) \ge \min(|s_{a \sim b}|,|s_{c \sim d}|)\) ,则 \(s_{a \sim b}<s_{c \sim d} \iff |s_{a \sim b}|<|s_{c \sim d}|\) ;否则 \(s_{a \sim b}<s_{c \sim d} \iff rk_{a}<rk_{c}\) 。
- 将 \(\operatorname{LCP} \ge x\) 转化成区间上对 \(height\) 的取 \(\min\) 后,按照 \(height\) 从大到小合并。
- luogu P3449 [POI 2006] PAL-Palindromes \(s,t\) 拼接后是回文串当且仅当 \(s+t=t+s\) ,哈希移项后判断。
- luogu P1117 [NOI2016] 优秀的拆分 枚举长度,设立关键点,统计经过两个关键点的贡献
- 将二进制下每一位 \(0,1\) 的变化看做 01Trie 上左右子树的翻转。
- CF1553H XOR and Distance
- 从低往高建 01Trie 支持全局 \(+1\)
- luogu P6018 [Ynoi2010] Fusion tree
- luogu P6623 [省选联考 2020 A 卷] 树 Trie 合并或树上差分维护
动态规划
- 费用提前计算 luogu P2365 任务安排 | luogu P4360 [CEOI2004] 锯木厂选址
- 代价/贡献延后处理
- 初中信息奥赛模拟测试 T4 ZEW 玩 thd
- NOIP2024模拟3 T4 GHzoj 3767. 七龙珠
- 对于 $1 \sim $ 某特定点这条根链上的点拿出来单独转移
- 可行的转移位置很少时,可以将每个数的转移位置单独转移。
- 对子集按位 DP HZOJ 368. 稳稳的参天大树
- 根号分治求解分拆数的扩展
- 优化状态设计
- 交换值域定义域
- 交换背包的体积和价值
- 某一限制条件下能否实现转化为实现/不实现的限制条件上、下界
- 多余的状态可以存储在一个状态里。
- 冗余条件直接删去
- 发掘其他性质
- luogu P9759 [COCI 2022/2023 #3] Bomboni 将原状态设计中 \(\mod k\) 一维改为与 \(k\) 的 \(\gcd\)。
- luogu P6400 [COI 2008] UMNOZAK 位数积只可能含有 \(2,3,5,7\) 作为质因子,其指数最大分别为 \(29,18,12,10\) ,在 \(10^{9}\) 范围内仅有 \(5194\) 个数。
- 等价类的后续决策相同,可以一起考虑。
- 交换值域定义域
- 若干个区间只有相离或包含关系,可以转化为树形关系。
- 数据结构优化 DP
- 如果相邻两层状态间能容易地维护增量的继承关系,可以考虑线段树优化 DP ,形似网格图上的转移居多。
- 预设性 DP 的主要思路是枚举填哪个数,考虑新增段、连接段的贡献。
- 不要把换根 DP 的思路仅仅局限于维护某一类信息。
- 笛卡尔树上跑 DP
- Slope Trick 维护连续的一次折线函数(常含有绝对值)。
- 贪心和 DP 调整相结合 luogu P8392 [BalticOI 2022] Uplifting Excursion (Day1)
- \(01\) 背包在对容量取模后符合决策单调性 LibreOJ 6039. 「雅礼集训 2017 Day5」珠宝 /「NAIPC2016」Jewel Thief
- luogu P3959 [NOIP 2017 提高组] 宝藏 按照深度扩展,状压 DP 维护
- 使用 WQS 二分优化 DP 转移时大胆猜测目标函数的凸性,需要决策单调性辅助时对于部分常见的满足四边形不等式的代价函数建议记住。常见的 WQS 二分因共线问题无法扩展至高维,可以学习 严谨的 WQS 二分方法 通用的解决方法 。
数学
- 数形结合
- 翻折对称
- [ARC152C] Pivot 将 \(a_{i}\) 替换为 \(2s-a_{i}\) 等价于作 \(a_{i}\) 关于 \(s\) 的对称点 \(2s-a_{i}\)
- 多校A层冲刺NOIP2024模拟赛20 T4 D. 对称旅行者
- 将点放到二维平面上考虑
- [ABC341G] Highest Ratio 将 \((i,sum_{i})\) 看做二维平面上的点后维护斜率单调的单调栈。
- 翻折对称
- 当贡献和位数有关时,可以考虑按位转移。
- luogu P3216 [HNOI2011] 数学作业 | [ABC129F] Takahashi's Basics in Education and Learning ,建出 \(18\) 个矩阵分开转移,注意会炸
long long。
- luogu P3216 [HNOI2011] 数学作业 | [ABC129F] Takahashi's Basics in Education and Learning ,建出 \(18\) 个矩阵分开转移,注意会炸
- 广义矩阵乘法
- 拆绝对值,\(\min,\max\) ,向下取整,取模时考虑每一部分什么时候的贡献取到。
- \(|x|=\max(x,-x)\) 初三奥赛模拟测试4 T3 渡尘 | luogu P9750 [CSP-J 2023] 一元二次方程
- 形如 \(|x| \le c\) 的不等式时因为 \(x,-x \le c\) 可以化简为 \(x \le c \land -x \le c\) 。
- \(a+b=\max(a,b)+\min(a,b)\)
- 转化贡献取到的条件
- \(|a-b|=\max(a,b)-\min(a,b)\)
- \(\min(a,b)=\begin{cases} a & a \le b \\ b & a>b \end{cases}\)
- 将向下取整拆成减余数的形式 luogu P6638 「JYLOI Round 1」常规
- 二项式反演,至少、至多与恰好之间的转化
- 详细内容等重学的时候再写
- 冲刺CSP联训模拟2 T2 P295. 工地难题
- 计数、概率、期望之间的转化
- 当 \((a+b)^{k}\) 中 \(k\) 较小时,可以使用二项式定理展开,部分情况下可以使用 NTT 优化。
- LibreOJ 6024. XLkxc
- [ABC399F] Range Power Sum
- 维护幂次的期望
- \(E((X+a)^{k})=\sum\limits (x+a)^{k}p=\sum\limits p \sum\limits_{i=0}^{k}\dbinom{k}{i}x^{i}a^{k-i}=\sum\limits_{i=0}^{k}\dbinom{k}{i}E(x^{k})a^{k-i}\)
- 2024牛客暑期多校训练营4 J Zero
- 暑假集训CSP提高模拟27 T2 P234.金箱子
- 多元二项式定理 \((\sum\limits_{i=1}^{n}x_{i})^{k}=\sum\limits_{c_{i} \ge 0,\sum c_{i}=k}\dbinom{k}{x_{1},x_{2}, \dots ,x_{n}} \prod\limits_{i=1}^{n}x_{i}^{c_{i}}\) ,证明可以考虑组合意义。
- 挑选合适的质数使得其在取模后仍等于原数。
- 当对模数进行质因数分解分别求解后 CRT 合并。
- 范德蒙德卷积合并组合数
- 基础博弈等学的时候再来写
- 杂项
- 方差等于平方的平均数减平均数的平方
- 阶乘增长速度极快
- 等比数列
- \(\begin{matrix}n 个 s \\ \overbrace{(ss \dots s)_{10}}\end{matrix}=\frac{10^{n}s-s}{9}\)
- luogu P4884 多少个 1?
- luogu P10253 说唱
- CF908G New Year and Original Order 将 \(11122 \dots 9\) 划分成 \(111 \dots 1,11\dots 1,\dots,1\) 的形式。
- 无穷递降等比数列求和 \(S=\frac{a_{1}}{1-q},|q|<1\)
- \(\begin{matrix}n 个 s \\ \overbrace{(ss \dots s)_{10}}\end{matrix}=\frac{10^{n}s-s}{9}\)
- 排序不等式
- 使用对数来缩小值域方便比较。
- \(\sigma_{k}(n)\) 是积性函数。
- \((a \land b) \le \min(a,b) \le \max(a,b) \le (a \lor b)\)
- 辗转相除的扩展
- 同余系的应用
- \(d(ij)=\sum\limits_{x|i}\sum\limits_{y|j}[\gcd(x,y)=1]\) 。
- \(\gcd,\operatorname{or},\operatorname{and}\) 在固定某个端点的情况下至多变换 \(\log\) 遍。
- 若 \(a \le b \le c\) ,则有 \(a \bigoplus c \le b \bigoplus c,a \bigoplus c\)。
- 将统计约数个数转化为统计倍数个数
- 预处理转移矩阵的若干次幂在矩阵快速幂时减少复杂度
- 树上高斯消元:基本思路是尝试将状态转移方程写作 \(f_{x}=a_{x}f_{fa_{x}}+b_{x}\) 的形式后手动解出(代入消元) \(a_{x},b_{x}\) 的值。
- luogu P3251 [JLOI2012] 时间流逝
- HDU4035 Maze 额外添加 \(f_{1}\) 的系数 \(c_{x}\) 得到 \(f_{x}=a_{x}f_{fa_{x}}+c_{x}f_{1}+b_{x}\) 。
- 2025省选模拟15 T3 P1046. 书
- luogu P11736 [集训队互测 2015] 胡策的小树
- 若 \(f(x)\) 是关于 \(x\) 的 \(n\) 次多项式则差分函数 \(g(x)=f(x)-f(x-1)\) 是关于 \(x\) 的 \(n-1\) 次多项式。借此对于一些 DP 转移方程是 \(n\) 次多项式的形式可以拉格朗日插值进行加速求值。
- 对 \(x\) 正交化对若干个与线性基查询的元素去重
计算几何
- 旋转坐标系,视情况交换曼哈顿距离与切比雪夫距离。
- 曼哈顿转切比雪夫
- 点的变换:\((x,y) \to (x+y,x-y)\)
- 距离的变换:\(|x_{1}-x_{2}|+|y_{1}-y_{2}|=\max(|(x_{1}+y_{1})-(x_{2}+y_{2})|,|(x_{1}-y_{1})-(x_{2}-y_{2})|)\)
- luogu P10633 BZOJ2989 数列/BZOJ4170 极光
- 切比雪夫转曼哈顿
- 点的变换:\((x,y) \to (\frac{x+y}{2},\frac{x-y}{2})\)
- 距离的变换:\(\max(|x_{1}-x_{2}|,|y_{1}-y_{2}|)=|\frac{x_{1}+y_{1}}{2}-\frac{x_{2}+y_{2}}{2}|+|\frac{x_{1}-y_{1}}{2}-\frac{x_{2}-y_{2}}{2}|\)
- 多校A层冲刺NOIP2024模拟赛07 T3 C. 距离(distance)
- CF1534G A New Beginning
- [ABC221G] Jumping sequence
- 曼哈顿转切比雪夫
杂项
- \(\sum\limits_{i=1}^{n}x_{i}=m\) 对应的本质不同的 \(x_{i}\) 至多只有 \(\sqrt{m}\) 种。
- 借此证明暴力求 \(\operatorname{mex}\) 的时间复杂度 CF940F Machine Learning 。
- 尝试考虑对于同一种 \(x\) 一起进行考虑 luogu P10114 [LMXOI Round 1] Size | 牛客 NC275719 自爆机器人
- 辅助根号分治/分块
- 数据点分治
- 数据范围明显有提示 多校A层冲刺NOIP2024模拟赛04 T4 D. 表达式
- 总和整除长度可以转化成每个数减去平均数后等于 \(0\) 2024初三集训模拟测试1 T3 score
- 构造合适的模型简化问题
- [ABC341E] Alternating String 一个串是 \(01\) 交替的,当且仅当任意相邻两位不相等。构造 \(x_{i}=[s_{i} \ne s_{i+1}](1 \le i \le n-1)\) 。
- luogu P3226 [HNOI2012] 集合选数 构造一个状压能维护的四个方向不能同时选择的矩阵。
- 如果能够快速地合并一个区间和多个区间的信息,可以考虑双向搜索。
- 当满足的限制条件是一段前后缀的形式(满足一定的单调性),可以通过分界点找到答案。
- 合理地进行分组简化处理
- 按照值域大小或其他评判标准分组考虑组内部的贡献和组间的贡献。
- [ABC353C] Sigma Problem
- [ARC148E] ≥ K
- luogu P10743 [SEERC 2020] AND = OR 按照 \(\operatorname{popcount}\) 和答案大小关系分组。
- 二进制分组,一部分正确性来自于答案来源下标一定存在不相等的一位(即一定存在一种划分方案使其不在同一个集合)。
- 暑假集训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,凭空产生的 \(\log\) 可能会成为复杂度瓶颈。 - 简化问题的限制,尝试进行合并。
- 缩小/扩大某个数对答案贡献的区间,启发式分裂是其重要应用之一。
- luogu P11364 [NOIP2024] 树上查询 特判掉 \(k=1\) 的情况后有 \(\max\limits_{[l,l+k-1] \in [L,R]} \{ \min\limits_{i=l}^{l+k} \{ dep_{\operatorname{LCA}(i,i+1)} \} \}\) 即为所求
- luogu P7880 [Ynoi2006] rldcot 树上启发式合并维护包含 \(x\) 的极短区间(DFS 序上的前驱、后继节点)
- 2025省选模拟13 T1 P1025. Easy Problem 处理出每个数作为中位数的极短区间
- 将限制条件中的区间相交/包含关系拆分成若干段。
- 全局考虑某一贡献不太可做(或操作顺序对贡献影响较大)时可以从个体单独考虑。
- 当直接开
bitset的空间复杂度较大且维护信息相互独立时可以考虑对bitset分块维护,以时间换空间。- UOJ 605. 【UER #9】知识网络
- luogu P5332 [JSOI2019] 精准预测
bitset维护多维偏序
- 优化枚举顺序,平衡时间复杂度。
- 差分与前缀和的转化
- luogu P11620 [Ynoi Easy Round 2025] TEST_34 将区间修改差分成单点修改后查询单点和区间构成的线性基
- luogu P7294 [USACO21JAN] Minimum Cost Paths P
- 先让 \(f_{i,j}=f_{i,j-1}+i^{2}\) 再考虑每列的转移 \(f_{i,j}=\min(f_{i,j},f_{i-1,j}+c_{j})\) 。设差分数组 \(g_{i,j}=f_{i,j}-f_{i-1,j}\) 。
- 初始时有 \(g_{i,j}=g_{i,j-1}+i^{2}-(i-1)^{2}=g_{i,j-1}+2i-1\) ,线段树维护全局加一次函数。
- 进一步观察到 \(g_{i}\) 单调不降,当前列对 \(c_{j}\) 取 \(\min\) 转化成后缀覆盖。
- 详细做法详见 P7294 [USACO21JAN] Minimum Cost Paths P 题解 。
- 覆盖操作后的加法转化成新的覆盖 luogu P4314 CPU 监控
- 逆序对扩展
- 将单调上升转化为单调不降可以将 \(a_{i} \gets a_{i}-i\) 。
- 正难则反
本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/18724962,未经允许严禁转载。
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。

游走在记忆长河之中,弥梦离默默捡拾那些被遗忘的片段。她守护每一个人心中的珍贵记忆,她会替他们记得,让记忆在时光中永存。
浙公网安备 33010602011771号