摘要:
插入 DP 总结 引 插入 DP 是一类非常巧妙的 DP,常用于计数、求概率、期望,也可用于求最值。具体地,它会用来求排列、划分相关信息等,这些排列、划分都有一定特征。 通常使用维护多个连续段信息的方法来解决。 状态 由于维护信息中通常有连续段个数这一维,且转移复杂不宜使用数据结构优化,导致其大小一
阅读全文
posted @ 2025-11-26 18:38
Add_Catalyst
阅读(12)
推荐(0)
摘要:
UTS Open '21 P7 - April Fools 题解 知识点 插入计数 DP。 分析 首先可以看出,这道题目是一道计数 DP,且在贪心地升序排序之后,我们的问题会变得更好求解。 其次,一个数据范围在 \(O(n^3)\) 的排列计数题,很容易想到插入 DP,那么我们就有了基本的思路: 维
阅读全文
posted @ 2025-11-25 22:17
Add_Catalyst
阅读(1)
推荐(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)
摘要:
AT_cf16_exhibition_final_f Intervals 题解 知识点 贪心,DP。 分析 可以证明有一个区间一定不动,分奇偶即可。 接下来很直观地可以感受到要把区间分到两边,且短的放在离不动区间近的会更优,所以我们降序排序。 进一步地,把区间对半分开放到左右也会让答案不劣,这就与初
阅读全文
posted @ 2025-11-24 20:07
Add_Catalyst
阅读(2)
推荐(0)
摘要:
[ROIR 2018] 管道监控 (Day1) 题解 知识点 Trie,Hash,树形 DP。 分析 其实很容易就可以想到全部解法,考虑 DP。 由于字符串长度较长,肯定有一维需要用来记延后处理的字符串,然后我们发现状态就没别的了,于是设 \(f_{u,i}\) 表示 \(u\) 节点处选取字符串往
阅读全文
posted @ 2025-11-23 15:26
Add_Catalyst
阅读(5)
推荐(0)
摘要:
[ROIR 2022] 礼物 (Day 2) 题解 知识点 链表。 分析 首先看到数据范围 \(k\le\min(100,n)\),说明复杂度与 \(k\) 有关,那么我们就可以考虑暴力一点地解决这个问题。 一开始我们可以想到按顺序插入数值,这样会有较好的性质,比如从大到小插入一个 \(u\) 时,
阅读全文
posted @ 2025-11-23 15:02
Add_Catalyst
阅读(1)
推荐(0)
摘要:
[ROIR 2024] 树根 (Day 1) 题解 知识点 树剖,线段树,二分。 分析 首先可以想到二分上界 \(lim\),那么我们贪心地从深度最大的节点开始遍历,如果深度 \(>lim+1\),就暴力地往上找 \(lim-1\) 级祖先,然后和根连一条额外的边。一直重复上述过程直到所有点深度都
阅读全文
posted @ 2025-11-21 18:46
Add_Catalyst
阅读(2)
推荐(0)
摘要:
[ROIR 2024] 二叉树的遍历 (Day 2) 题解 知识点 分块。 分析 首先考虑对查询 \(u\) 有影响的操作: 子孙节点: 当 \(c_u = 0\) 时,它的左子树需要计入。 当 \(c_u = 1\) 时,它的左右子树都需要计入。 祖先节点: 设某个祖先为 \(anc\)。 当 \
阅读全文
posted @ 2025-11-21 18:18
Add_Catalyst
阅读(1)
推荐(0)
摘要:
偏序问题专题 前言 在 OI 中,我们常常能见到要求 \(i\le j\) 这样的条件,它们用来限制问题求解范围。 在只有少量限制时,这些问题的求解较为简单,但是当维度变高,条件变得复杂。 概述 偏序问题最简单的形式有: 给定 \(n\) 个 \(m\) 维坐标点 \((x_{i,1},x_{i,2
阅读全文
posted @ 2025-11-19 19:42
Add_Catalyst
阅读(17)
推荐(0)
摘要:
[COI 2019] IZLET 题解 知识点 构造,并查集。 分析 Sub 1 将 \(1\) 的边缩点,此时所有相连的点对颜色互不相同,那么连接就很容易。 可以考虑找一个点作为 \(1\),其余都是 \(2\),并与它相连。 Sub 2 考虑往回找颜色相同的点,其实比较简单。假设从 \(1\)
阅读全文
posted @ 2025-11-18 15:04
Add_Catalyst
阅读(1)
推荐(0)
摘要:
[NOIP2024] 树上查询 题解 知识点 LCA,偏序,扫描线,线段树。 分析 法 1 考虑不断从树底往上合并,那么我们就可以得到一堆连续段,在每个节点 \(u\) 处记加入 \(u\) 后哪个连续段连了起来,记为 \([l_u,r_u]\),然后就可以做扫描线。 第一步 DSU 求出即可,后面
阅读全文
posted @ 2025-11-17 20:44
Add_Catalyst
阅读(12)
推荐(0)
摘要:
[NOIP2024] 树的遍历 题解 知识点 树形 DP。 题意简述 给定一棵树,并给定 \(k\) 条关键边,以其中任意一条为根,对树的边进行 DFS 遍历建新树,问有多少种新树。 分析 考虑画图理解,发现对于一种新树,能成为它的根节点的只有一条从叶子到叶子的链上的边,因为每个非叶节点周围的新边会
阅读全文
posted @ 2025-11-17 20:43
Add_Catalyst
阅读(3)
推荐(0)
摘要:
[NOIP2024] 遗失的赋值 题解 知识点 组合数学。 分析 首先判断一下数据合法性,然后 \(d\) 就没有了用处。 将 \(c\) 排序,发现可以容斥一下,统计方案只需考虑相邻两个数之间的关系和首尾的特殊处理。 那么相邻两个数之间的关系可以考虑容斥,把 \(v^{2(c_{i+1}-c_i)
阅读全文
posted @ 2025-11-17 20:42
Add_Catalyst
阅读(4)
推荐(0)
摘要:
[NOIP2024] 编辑字符串 题解 知识点 贪心。 题意简述 给定两个 01 序列,规定每个序列某些位置可以进行左右互换操作。 要求求出操作后两序列一一对应相同的值最多有多少。 题目分析 其实可以很简单地想到一个贪心:将能对上的就对上。 然后发现这是对的,因为能互换的位置是固定的,这就导致先把最
阅读全文
posted @ 2025-11-17 20:42
Add_Catalyst
阅读(5)
推荐(0)
摘要:
[CSP-S 2025] 员工招聘(employ)题解 知识点 组合数学,容斥,计数 DP。 分析 组合计数 首先对于状态的定义,我们能够想到与大小比较有关,因为这里的大小比较一直在变化,如果能够将它装入状态,将会极大地便利我们的决策。 设状态为 \(f_{i,j,k}\),比较常规的两维 \(i,
阅读全文
posted @ 2025-11-13 14:57
Add_Catalyst
阅读(25)
推荐(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)
摘要:
[CSP-S 2025] 社团招新(club)题解 知识点 贪心。 分析 首先考虑没有 \(\le \frac{n}2\) 的限制,直接选最大的,那么会生成一种方案。 然后再加入限制,直接把最多的那个会减少的值都求出来排个序即可。 反思 第一题大概 \(45\) min 结束,打暴力稍微有点犹豫。
阅读全文
posted @ 2025-11-13 14:55
Add_Catalyst
阅读(4)
推荐(0)
摘要:
[CSP-S 2025] 道路修复(road)题解 知识点 状压,最小生成树(MST),归并。 分析 首先考虑缩小 \(m\),这个 trick 非常经典,在 P3639 [APIO2013] 道路费用 - 洛谷 (luogu.com.cn) 中就有,利用 Kruscal 贪心性质把不可能存在的边删
阅读全文
posted @ 2025-11-13 14:55
Add_Catalyst
阅读(2)
推荐(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)
摘要:
P9001 [CEOI 2022] Parking 题解 前言 笔者认为自己的分析较有利于代码实现,而且理解也来的容易。 知识点 构造,模拟,图论,环,链。 分析 暴力 首先对于 \(M\le 4\) 的部分有暴力 BFS,可以 \(O(m^2(2m)!)\) 过。 性质 然后我们考虑找性质,对于一
阅读全文
posted @ 2025-09-13 19:52
Add_Catalyst
阅读(10)
推荐(1)
摘要:
P12503 「ROI 2025 Day1」索契游乐园 题解 知识点 二分,三分,贪心,数学。 分析 首先可以知道我们可以把折返的贡献分为两边独立的贡献,只要一边移动的贡献设为 \(t\),另一边设为 \(2t\) 即可。 那么将坐标 \(<x_0\) 和 \(>x_0\) 的分开到两个数组中,重新
阅读全文
posted @ 2025-09-07 10:54
Add_Catalyst
阅读(12)
推荐(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)
摘要:
P9262 [PA 2022] Łamigłówka 题解 知识点 贪心,模拟。 分析 首先知道暴力可以直接 \(O(nmK)\) 的解决。 简化操作序列 发现对于操作序列中,连在一起的 LL 等相同的字符可以缩掉,然后再进一步发现,如果同是水平方向的操作(L、P)挨在一起,那么只需要留最后一个即可
阅读全文
posted @ 2025-09-05 13:56
Add_Catalyst
阅读(5)
推荐(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)
摘要:
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)
摘要:
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)
摘要:
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)
摘要:
CF720E Cipher 题解 知识点 进制,模拟,贪心。 分析 发现我们想要确定一位数时,只有两种方法: 该位数字自己加 \(1\),从变化顺序可以看出它是哪一位。 该位数字加 \(1\),导致高位数字出现变化,看出它现在变成了 \(0\)。这种情况包括整个数字达到了 \(n+1\) 位的情况。
阅读全文
posted @ 2025-09-03 19:33
Add_Catalyst
阅读(10)
推荐(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)
摘要:
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)
摘要:
P11113 [ROI 2024] 2026 (Day 1) 题解 知识点 贪心,模拟。 分析 首先知道暴力可以直接 \(O(\sum nmQ)\) 的解决。 简化操作序列 发现对于操作序列中,连在一起的 LL 等相同的字符可以缩掉,然后再进一步发现,如果同是水平方向的操作(L、R)挨在一起,那么只
阅读全文
posted @ 2025-08-31 15:21
Add_Catalyst
阅读(7)
推荐(0)
摘要:
后缀数组 学习笔记 定义 包含 \(sa\) 和 \(rk\) 两个数组,其含义如下: \(sa_i\) 表示:将所有后缀按字典序排序后,在第 \(i\) 位的后缀的第一位下标。 \(rk_i\) 表示:将所有后缀按字典序排序后,第一位下标为 \(i\) 的后缀的排名。 其中 \(sa\) 是我们所
阅读全文
posted @ 2025-08-21 14:18
Add_Catalyst
阅读(14)
推荐(0)
摘要:
广义后缀自动机 学习笔记 概述 广义后缀自动机(General Suffix Automaton)是将后缀自动机整合到字典树中来解决对于多个字符串的子串问题。 定义 字符串集合 \(\set{s}\) 的广义后缀自动机(GSAM)是一个接受 \(\set{s}\) 的所有字符串的所有后缀的最小 DF
阅读全文
posted @ 2025-08-21 14:16
Add_Catalyst
阅读(14)
推荐(0)
摘要:
后缀自动机 学习笔记 概述 后缀自动机(suffix automaton, SAM)是一个能解决许多字符串相关问题的有力的数据结构。 直观上,字符串的 SAM 可以理解为给定字符串的 所有子串 的压缩形式。 定义 字符串 \(s\) 的后缀自动机(SAM)是一个接受 \(s\) 的所有后缀的最小 D
阅读全文
posted @ 2025-08-21 14:15
Add_Catalyst
阅读(49)
推荐(0)
摘要:
[CCO 2024] Telephone Plans 题解 知识点 启发式合并,启发式分裂,BFS,LCT。 分析 首先有“所有边连接起来会得到森林”和“所有边只会出现一段连续的时间”两个重要条件。 然后对于连边和删边就有如下算法: 连边:启发式合并,将较小的连通块接到较大的上面。 删边:启发式分裂
阅读全文
posted @ 2025-08-20 19:49
Add_Catalyst
阅读(7)
推荐(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)
摘要:
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)
摘要:
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)
摘要:
P9864 [POI 2021/2022 R2] age 题解 知识点 树形最值 DP,分类讨论。 分析 简化题意 给定 \(k\) 个关键点,将树划分为 \(k\) 个连通块,每个块包含一个关键点。 设特殊点 \(i\) 在其联通块内为端点的最长链长度为 \(len_i\),则一种划分方案的代价为
阅读全文
posted @ 2025-06-19 21:36
Add_Catalyst
阅读(41)
推荐(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)