摘要: 插入 DP 总结 引 插入 DP 是一类非常巧妙的 DP,常用于计数、求概率、期望,也可用于求最值。具体地,它会用来求排列、划分相关信息等,这些排列、划分都有一定特征。 通常使用维护多个连续段信息的方法来解决。 状态 由于维护信息中通常有连续段个数这一维,且转移复杂不宜使用数据结构优化,导致其大小一 阅读全文
posted @ 2025-11-26 18:38 Add_Catalyst 阅读(12) 评论(0) 推荐(0)
摘要: UTS Open '21 P7 - April Fools 题解 知识点 插入计数 DP。 分析 首先可以看出,这道题目是一道计数 DP,且在贪心地升序排序之后,我们的问题会变得更好求解。 其次,一个数据范围在 \(O(n^3)\) 的排列计数题,很容易想到插入 DP,那么我们就有了基本的思路: 维 阅读全文
posted @ 2025-11-25 22:17 Add_Catalyst 阅读(1) 评论(0) 推荐(0)
摘要: 冒泡排序二合一 题解 知识点 线段树,树状数组,主席树。 题意简述 给定一个排列 \(a\),有下列两种询问: 给定 \(l,r,k,x\),求将 \(a\) 的区间 \([l,r]\) 冒泡排序 \(k\) 轮之后,\(x\) 这个数在数组中的位置。 给定 \(l,r,k,x\),求将 \(a\) 阅读全文
posted @ 2025-11-24 21:57 Add_Catalyst 阅读(8) 评论(0) 推荐(0)
摘要: AT_cf16_exhibition_final_f Intervals 题解 知识点 贪心,DP。 分析 可以证明有一个区间一定不动,分奇偶即可。 接下来很直观地可以感受到要把区间分到两边,且短的放在离不动区间近的会更优,所以我们降序排序。 进一步地,把区间对半分开放到左右也会让答案不劣,这就与初 阅读全文
posted @ 2025-11-24 20:07 Add_Catalyst 阅读(2) 评论(0) 推荐(0)
摘要: [ROIR 2018] 管道监控 (Day1) 题解 知识点 Trie,Hash,树形 DP。 分析 其实很容易就可以想到全部解法,考虑 DP。 由于字符串长度较长,肯定有一维需要用来记延后处理的字符串,然后我们发现状态就没别的了,于是设 \(f_{u,i}\) 表示 \(u\) 节点处选取字符串往 阅读全文
posted @ 2025-11-23 15:26 Add_Catalyst 阅读(5) 评论(0) 推荐(0)
摘要: [ROIR 2022] 礼物 (Day 2) 题解 知识点 链表。 分析 首先看到数据范围 \(k\le\min(100,n)\),说明复杂度与 \(k\) 有关,那么我们就可以考虑暴力一点地解决这个问题。 一开始我们可以想到按顺序插入数值,这样会有较好的性质,比如从大到小插入一个 \(u\) 时, 阅读全文
posted @ 2025-11-23 15:02 Add_Catalyst 阅读(1) 评论(0) 推荐(0)
摘要: [ROIR 2024] 树根 (Day 1) 题解 知识点 树剖,线段树,二分。 分析 首先可以想到二分上界 \(lim\),那么我们贪心地从深度最大的节点开始遍历,如果深度 \(>lim+1\),就暴力地往上找 \(lim-1\) 级祖先,然后和根连一条额外的边。一直重复上述过程直到所有点深度都 阅读全文
posted @ 2025-11-21 18:46 Add_Catalyst 阅读(2) 评论(0) 推荐(0)
摘要: [ROIR 2024] 二叉树的遍历 (Day 2) 题解 知识点 分块。 分析 首先考虑对查询 \(u\) 有影响的操作: 子孙节点: 当 \(c_u = 0\) 时,它的左子树需要计入。 当 \(c_u = 1\) 时,它的左右子树都需要计入。 祖先节点: 设某个祖先为 \(anc\)。 当 \ 阅读全文
posted @ 2025-11-21 18:18 Add_Catalyst 阅读(1) 评论(0) 推荐(0)
摘要: 偏序问题专题 前言 在 OI 中,我们常常能见到要求 \(i\le j\) 这样的条件,它们用来限制问题求解范围。 在只有少量限制时,这些问题的求解较为简单,但是当维度变高,条件变得复杂。 概述 偏序问题最简单的形式有: 给定 \(n\) 个 \(m\) 维坐标点 \((x_{i,1},x_{i,2 阅读全文
posted @ 2025-11-19 19:42 Add_Catalyst 阅读(17) 评论(0) 推荐(0)
摘要: [COI 2019] IZLET 题解 知识点 构造,并查集。 分析 Sub 1 将 \(1\) 的边缩点,此时所有相连的点对颜色互不相同,那么连接就很容易。 可以考虑找一个点作为 \(1\),其余都是 \(2\),并与它相连。 Sub 2 考虑往回找颜色相同的点,其实比较简单。假设从 \(1\) 阅读全文
posted @ 2025-11-18 15:04 Add_Catalyst 阅读(1) 评论(0) 推荐(0)
摘要: [NOIP2024] 树上查询 题解 知识点 LCA,偏序,扫描线,线段树。 分析 法 1 考虑不断从树底往上合并,那么我们就可以得到一堆连续段,在每个节点 \(u\) 处记加入 \(u\) 后哪个连续段连了起来,记为 \([l_u,r_u]\),然后就可以做扫描线。 第一步 DSU 求出即可,后面 阅读全文
posted @ 2025-11-17 20:44 Add_Catalyst 阅读(12) 评论(0) 推荐(0)
摘要: [NOIP2024] 树的遍历 题解 知识点 树形 DP。 题意简述 给定一棵树,并给定 \(k\) 条关键边,以其中任意一条为根,对树的边进行 DFS 遍历建新树,问有多少种新树。 分析 考虑画图理解,发现对于一种新树,能成为它的根节点的只有一条从叶子到叶子的链上的边,因为每个非叶节点周围的新边会 阅读全文
posted @ 2025-11-17 20:43 Add_Catalyst 阅读(3) 评论(0) 推荐(0)
摘要: [NOIP2024] 遗失的赋值 题解 知识点 组合数学。 分析 首先判断一下数据合法性,然后 \(d\) 就没有了用处。 将 \(c\) 排序,发现可以容斥一下,统计方案只需考虑相邻两个数之间的关系和首尾的特殊处理。 那么相邻两个数之间的关系可以考虑容斥,把 \(v^{2(c_{i+1}-c_i) 阅读全文
posted @ 2025-11-17 20:42 Add_Catalyst 阅读(4) 评论(0) 推荐(0)
摘要: [NOIP2024] 编辑字符串 题解 知识点 贪心。 题意简述 给定两个 01 序列,规定每个序列某些位置可以进行左右互换操作。 要求求出操作后两序列一一对应相同的值最多有多少。 题目分析 其实可以很简单地想到一个贪心:将能对上的就对上。 然后发现这是对的,因为能互换的位置是固定的,这就导致先把最 阅读全文
posted @ 2025-11-17 20:42 Add_Catalyst 阅读(5) 评论(0) 推荐(0)
摘要: [CSP-S 2025] 员工招聘(employ)题解 知识点 组合数学,容斥,计数 DP。 分析 组合计数 首先对于状态的定义,我们能够想到与大小比较有关,因为这里的大小比较一直在变化,如果能够将它装入状态,将会极大地便利我们的决策。 设状态为 \(f_{i,j,k}\),比较常规的两维 \(i, 阅读全文
posted @ 2025-11-13 14:57 Add_Catalyst 阅读(25) 评论(0) 推荐(0)
摘要: [CSP-S 2025] 谐音替换(replace)题解 知识点 Trie,ACAM,Hash。 分析 首先排除一些 corner case: \(s_1 = s_2\):需要直接扔掉,虽然对于一些算法没有影响,但是保险起见。 \(|t_1| \neq |t_2|\):输出 \(0\) 即可。 现在 阅读全文
posted @ 2025-11-13 14:56 Add_Catalyst 阅读(10) 评论(0) 推荐(0)
摘要: [CSP-S 2025] 社团招新(club)题解 知识点 贪心。 分析 首先考虑没有 \(\le \frac{n}2\) 的限制,直接选最大的,那么会生成一种方案。 然后再加入限制,直接把最多的那个会减少的值都求出来排个序即可。 反思 第一题大概 \(45\) min 结束,打暴力稍微有点犹豫。 阅读全文
posted @ 2025-11-13 14:55 Add_Catalyst 阅读(4) 评论(0) 推荐(0)
摘要: [CSP-S 2025] 道路修复(road)题解 知识点 状压,最小生成树(MST),归并。 分析 首先考虑缩小 \(m\),这个 trick 非常经典,在 P3639 [APIO2013] 道路费用 - 洛谷 (luogu.com.cn) 中就有,利用 Kruscal 贪心性质把不可能存在的边删 阅读全文
posted @ 2025-11-13 14:55 Add_Catalyst 阅读(2) 评论(0) 推荐(0)
摘要: [集训队互测 2015] 上帝之手 题解 知识点 线段树,分块。 分析 约定 定义更换:\(l_i\to lim_i,d_i\to del_i\)。 定义查询 \(F(l,r,x)\)(如果 \(x\) 空缺,默认为 \(lim_{l-1}\))表示 \(x\) 一直做 \(\to \min\{ x 阅读全文
posted @ 2025-11-12 22:17 Add_Catalyst 阅读(3) 评论(0) 推荐(0)
摘要: P9001 [CEOI 2022] Parking 题解 前言 笔者认为自己的分析较有利于代码实现,而且理解也来的容易。 知识点 构造,模拟,图论,环,链。 分析 暴力 首先对于 \(M\le 4\) 的部分有暴力 BFS,可以 \(O(m^2(2m)!)\) 过。 性质 然后我们考虑找性质,对于一 阅读全文
posted @ 2025-09-13 19:52 Add_Catalyst 阅读(10) 评论(0) 推荐(1)
摘要: P12503 「ROI 2025 Day1」索契游乐园 题解 知识点 二分,三分,贪心,数学。 分析 首先可以知道我们可以把折返的贡献分为两边独立的贡献,只要一边移动的贡献设为 \(t\),另一边设为 \(2t\) 即可。 那么将坐标 \(<x_0\) 和 \(>x_0\) 的分开到两个数组中,重新 阅读全文
posted @ 2025-09-07 10:54 Add_Catalyst 阅读(12) 评论(0) 推荐(0)
摘要: QOJ 2273 Suffixes may Contain Prefixes 题解 知识点 KMP,exKMP,DP,FSM(DFA,NFA)。 分析 首先建出 \(S\) 的 KMP 自动机,然后考虑在自动机上 DP。 那么设状态为 \(f_{i,u}\) 表示到了 \(i\),在自动机上状态为 阅读全文
posted @ 2025-09-05 14:45 Add_Catalyst 阅读(20) 评论(0) 推荐(0)
摘要: P9262 [PA 2022] Łamigłówka 题解 知识点 贪心,模拟。 分析 首先知道暴力可以直接 \(O(nmK)\) 的解决。 简化操作序列 发现对于操作序列中,连在一起的 LL 等相同的字符可以缩掉,然后再进一步发现,如果同是水平方向的操作(L、P)挨在一起,那么只需要留最后一个即可 阅读全文
posted @ 2025-09-05 13:56 Add_Catalyst 阅读(5) 评论(0) 推荐(0)
摘要: Gym 103860B Shuttle Bus 题解 知识点 可删堆,对顶堆,换根 DP,长链剖分。 分析 首先我们有 \(O(n^2)\) 的暴力做法:我们以每个点为根,暴力对树进行长链剖分。 具体地,设 \(siz_u = \sum_{v\in S(u)} a_v\),其中 \(S(u)\) 表 阅读全文
posted @ 2025-09-04 22:00 Add_Catalyst 阅读(10) 评论(0) 推荐(0)
摘要: P9873 [EC Final 2021] Beautiful String 题解 知识点 字符串,LCP,Hash,KMP。 分析 首先我们知道 \(A,B,C,D,E,F\) 六个非空子串中,\(A=B=E,C=F\),那么 \(BC=EF\),我们设 \(G=BC=EF\),那么原串可以表示为 阅读全文
posted @ 2025-09-04 21:29 Add_Catalyst 阅读(12) 评论(0) 推荐(0)
摘要: EOlymp 1976 Programming is an art! 题解 知识点 区间 DP。 分析 设 \(f_{l,r}\) 表示区间 \([l,r)\) 中最多颜色种类数,且这些颜色的区间被包含在 \([l,r)\) 中,即要求颜色 \(i\) 满足 \([L_i,R_i)\subseteq 阅读全文
posted @ 2025-09-04 20:50 Add_Catalyst 阅读(7) 评论(0) 推荐(0)
摘要: QOJ 3804 Distributing the Treasure 题解 知识点 构造,二分图,DAG,最长路。 分析 首先有个很明显的特判:\(n\ge m\) 时,输出 \(1\sim m\) 即可。那么排除了上述情况后,发现 \(n\le m\le \sqrt{2\times 10^5}<4 阅读全文
posted @ 2025-09-03 22:09 Add_Catalyst 阅读(8) 评论(0) 推荐(0)
摘要: CF720E Cipher 题解 知识点 进制,模拟,贪心。 分析 发现我们想要确定一位数时,只有两种方法: 该位数字自己加 \(1\),从变化顺序可以看出它是哪一位。 该位数字加 \(1\),导致高位数字出现变化,看出它现在变成了 \(0\)。这种情况包括整个数字达到了 \(n+1\) 位的情况。 阅读全文
posted @ 2025-09-03 19:33 Add_Catalyst 阅读(10) 评论(0) 推荐(0)
摘要: AT_s8pc_4_e Enormous Atcoder Railroad 题解 知识点 DP。 分析 \(f_{i,j,k}\) 表示长度为 \(i\) 的区间,左边到原点距离为 \(j\),右边到原点距离为 \(k\) 时方案数为多少。发现只需要求满足 \(j=k\lor j+1=k\) 的状态 阅读全文
posted @ 2025-09-02 21:29 Add_Catalyst 阅读(12) 评论(0) 推荐(0)
摘要: P11119 [ROI 2024] 保持连接 (Day 2) 知识点 DP,前缀和。 分析 设 \(L_i,R_i\) 表示能够覆盖到点 \(i\) 的区间的左端点最小值、右端点最大值。考虑不带修改的情况。 那么设 \(g_i\) 表示以 \(i\) 作为起点,以 \([i,n]\) 内端点作为终点 阅读全文
posted @ 2025-09-01 16:01 Add_Catalyst 阅读(38) 评论(0) 推荐(0)
摘要: P11113 [ROI 2024] 2026 (Day 1) 题解 知识点 贪心,模拟。 分析 首先知道暴力可以直接 \(O(\sum nmQ)\) 的解决。 简化操作序列 发现对于操作序列中,连在一起的 LL 等相同的字符可以缩掉,然后再进一步发现,如果同是水平方向的操作(L、R)挨在一起,那么只 阅读全文
posted @ 2025-08-31 15:21 Add_Catalyst 阅读(7) 评论(0) 推荐(0)
摘要: 后缀数组 学习笔记 定义 包含 \(sa\) 和 \(rk\) 两个数组,其含义如下: \(sa_i\) 表示:将所有后缀按字典序排序后,在第 \(i\) 位的后缀的第一位下标。 \(rk_i\) 表示:将所有后缀按字典序排序后,第一位下标为 \(i\) 的后缀的排名。 其中 \(sa\) 是我们所 阅读全文
posted @ 2025-08-21 14:18 Add_Catalyst 阅读(14) 评论(0) 推荐(0)
摘要: 广义后缀自动机 学习笔记 概述 广义后缀自动机(General Suffix Automaton)是将后缀自动机整合到字典树中来解决对于多个字符串的子串问题。 定义 字符串集合 \(\set{s}\) 的广义后缀自动机(GSAM)是一个接受 \(\set{s}\) 的所有字符串的所有后缀的最小 DF 阅读全文
posted @ 2025-08-21 14:16 Add_Catalyst 阅读(14) 评论(0) 推荐(0)
摘要: 后缀自动机 学习笔记 概述 后缀自动机(suffix automaton, SAM)是一个能解决许多字符串相关问题的有力的数据结构。 直观上,字符串的 SAM 可以理解为给定字符串的 所有子串 的压缩形式。 定义 字符串 \(s\) 的后缀自动机(SAM)是一个接受 \(s\) 的所有后缀的最小 D 阅读全文
posted @ 2025-08-21 14:15 Add_Catalyst 阅读(49) 评论(0) 推荐(0)
摘要: [CCO 2024] Telephone Plans 题解 知识点 启发式合并,启发式分裂,BFS,LCT。 分析 首先有“所有边连接起来会得到森林”和“所有边只会出现一段连续的时间”两个重要条件。 然后对于连边和删边就有如下算法: 连边:启发式合并,将较小的连通块接到较大的上面。 删边:启发式分裂 阅读全文
posted @ 2025-08-20 19:49 Add_Catalyst 阅读(7) 评论(0) 推荐(0)
摘要: [CCO 2024] Heavy Light Decomposition 题解 知识点 DP,线段树优化。 分析 考虑 \(a_i,a_{i+1}\) 间限制: \(a_i \neq a_{i+1}\)。 \(a_i,a_{i+1}\) 之间只有一个为重一个为轻,则可以得到同时包含它们的区间限制: 阅读全文
posted @ 2025-08-20 19:33 Add_Catalyst 阅读(12) 评论(0) 推荐(0)
摘要: HDU - 6056 simple counting problem 题解 ——【UNR #2】梦中的题面 原版 & 加强版题目 知识点 组合数学,容斥,斯特林数,计数 DP。 分析 首先第一步容斥,考虑钦定某些一定 \(i\) 超过 \(b_i-c\) 的限制,即至少选 \(b_i-c+1\) 个 阅读全文
posted @ 2025-08-17 22:09 Add_Catalyst 阅读(14) 评论(0) 推荐(0)
摘要: POJ 2759 Distributing tasks/Lyk Love painting 题解 知识点 二分,DP,尺取。 分析 约定 \(a_i,b_i,c_i\) 分别表示第一排树种树难度、第二排树种树难度以及一二排树种树难度的和,而 \(A_i,B_i,C_i\) 分别是它们的前缀和。 首先 阅读全文
posted @ 2025-08-06 20:14 Add_Catalyst 阅读(9) 评论(0) 推荐(0)
摘要: P9864 [POI 2021/2022 R2] age 题解 知识点 树形最值 DP,分类讨论。 分析 简化题意 给定 \(k\) 个关键点,将树划分为 \(k\) 个连通块,每个块包含一个关键点。 设特殊点 \(i\) 在其联通块内为端点的最长链长度为 \(len_i\),则一种划分方案的代价为 阅读全文
posted @ 2025-06-19 21:36 Add_Catalyst 阅读(41) 评论(0) 推荐(0)
摘要: 容斥计数 笔记&例题 内容 主要就是容斥原理和二项式反演。 容斥原理 设 \(A_1,A_2,...,A_n\) 是集合 \(S\) 的子集,表示以集合 \(S\) 代表可能发生的事件的 \(n\) 个子事件, \(|A_i|\) 表示子事件 \(A_i\) 发生的次数 \((0 < i \le n 阅读全文
posted @ 2025-06-13 20:41 Add_Catalyst 阅读(18) 评论(0) 推荐(0)