02 2025 档案
摘要:CF2064E Mycraft Sand Sort 第一次一眼秒了一道 E,但是被人均六分钟 C 题硬控一小时,未能写完,遗憾离场,特此纪念。 考虑第一列,无论排列 p′p′ 是什么样子,第一列一定是 c′c′。因此,c′c′ 数组一定等于 cc 数组。 这个结论还引出一个推论,\
阅读全文
摘要:CF2063D Game With Triangles 小清新三分,有几个细节赛时没有调完,遗憾离场,破防了。 注意到如果我们可以求 f(k)f(k),那么 kmaxkmax 只需要一直枚举 kk 直到 f(k)f(k) 求不出来为止,因此我们直接考虑求 f(k)f(k)。
阅读全文
摘要:AT_agc014_d [AGC014D] Black and White Tree 我们充分发扬人类智慧。 不难发现如果树根确定的情况下,先手会从叶子的父亲开始填,如果填到某两棵子树的白点中刚好是同一个节点,我们就可以直接填这个节点,这样两个儿子中至少有一个被完全白点阻隔,先手获胜。 考虑到树根是
阅读全文
摘要:CF2031D Penchick and Desert Rabbit 赛时 A,B,C 共计吃了 55 发罚时,这就是我的真实实力!来补篇题解。 考虑分析每一个位置的性质,不难发现最后一个位置一定能跳到最大值的位置。 接下来,我们考虑第 n−1n−1 个位置。类比最后一个位置,我们发现,这个
阅读全文
摘要:CF559E Gerald and Path 很困难的 DP 题,状态不是很好想。对于这种线段覆盖类题目,显然先覆盖哪个线段没有影响,我们可以通过按照端点位置升序排序后按照顺序考虑,这样可能会有一些额外性质。 之后,考虑转移时需要什么东西来刻画一个状态的轮廓。显然我们需要知道现在是第几条线段,并且计
阅读全文
摘要:P11160 【MX-X6-T6】機械生命体 注意到 lowbitlowbit 是从最低位开始的,所以我们把数字按照二进制位从低位往高位插进字典树。 插入和删除操作是平凡的。查最大 lowbitlowbit 只需要从根节点开始走,能走使这一位异或为 00 的边就走这一条边,
阅读全文
摘要:P11157 【MX-X6-T3】さよならワンダーランド 神秘思维题。 考虑到转化式子,拆成 j≥aij≥ai 和 j≤ai+jj≤ai+j。前一个不等式是容易满足的,我们只需要在 [max{1,i+ai},n][max{1,i+ai},n] 中选择 i+ji+j 即可。 第二个不等式可化为 \
阅读全文
摘要:P11159 【MX-X6-T5】再生 简单数学题。 首先根不同肯定是在诈骗,最长的链的链顶就是树根。然后考虑一条长链内,除了链顶都可以随意排序,对于每条链,答案乘上链中元素数量减一的阶乘。 然后考虑把这些链提取出来,重新拼接成一棵树。注意到如果先拼短链再拼长链,长链会影响到短链,限制较多,而先拼长
阅读全文
摘要:P11158 【MX-X6-T4】夢重力 分类讨论好题。 不难发现交换行等价于交换列,考虑转化贡献体,枚举长度为 n2n2 区间,统计这个区间被多少种交换方式包含。 考虑一个长度为 n2n2 区间满足要求的充要条件是存在一段空权值区间 \([x,x+\fr
阅读全文
摘要:P11132 【MX-X5-T4】「GFOI Round 1」epitaxy 基于次大值的构造。 考虑到如果最大值和次大值都出现那么结果一定为 11。而如果次大值在序列中出现 2m−12m−1 次,则一定会与最大值一起出现,这是不好的。 因此,我们构造把次大值放在序列开头,之后最大值必须要放在
阅读全文
摘要:P11131 【MX-X5-T3】「GFOI Round 1」Cthugha 有意思的最短路题目,需要对迪杰斯特拉算法有深入的理解。 首先,不存在最小值的条件是相邻的两个格子加起来值小于 00,此时在这两个格子之间反复横跳,就没有最小值。 观察到 qq 很小,所以我们把网格建成一个图,对
阅读全文
摘要:P7276 送给好友的礼物 我们充分发扬人类智慧。 首先分析性质,如果一个有草莓的节点子树中存在有草莓的节点,那么我们就直接不管这个有草莓的节点,因为首先子树内的草莓已经会遍历这个点。 另外,根据 P3320 [SDOI2015] 寻宝游戏 的结论,一个人肯定是按照 DFS 序大小遍历它需要遍历的草
阅读全文
摘要:P10507 Georgia and Bob 这篇题解的注重点不是结论的证明,而是发现结论的思路,所以比较偏感性。证明人人都会,而发现结论的思路才是这题真正值得思考的地方。 感觉这道题不知道阶梯 NIM 自己推出来也不难,在这个建模下思路挺顺的。感觉讲解阶梯 NIM 可以采用这个模型。 显然的博弈论
阅读全文
摘要:P10501 Cutting Game 博弈论经典题目,考虑使用 SG 函数解决。 但是这一题和有向图游戏的定义不同,在有向图游戏不能操作者判负,而这一题中操作出某个状态者判胜。因此,我们需要进行转化。经典做法是往前推直到推出必败态作为有向图游戏的终点。 我们考虑什么样的情况可以剪出 \(1\tim
阅读全文
摘要:P10102 [GDKOI2023 提高组] 矩阵 模拟赛题,场切了,似乎做法和全世界都不一样。 直接暴力矩阵乘法显然过不去,也没有什么前途。注意到只需要判定是否相等,考虑矩阵每一行的和。假设现在正在计算第 ii 项的和。 \[\sum_{j=1}^n \sum_{k=1}^n A_{i,k}
阅读全文
摘要:AT_agc049_d [AGC049D] Convex Sequence 限制 11 不好满足,先不管它。限制 22 移项可得 ai−ai−1≤ai+1−aiai−ai−1≤ai+1−ai,即差分非严格单调递增,满足要求的序列为一个单谷序列。 我们考虑枚举最左侧的最小值的出现位
阅读全文
摘要:AT_arc133_b [ARC133B] Dividing Subsequence 模拟赛原题,来写篇题解。 只考虑匹配的状态,根据调和级数的数学知识,匹配的状态数不多,为 O(nlogn)O(nlogn),考虑动态规划。 我们对于每个 aiai 预处理出可以匹配的位置 ci,jci,j
阅读全文
摘要:CF1227G Not Same 构造。考虑按照每个数字进行考虑,每次填充一列。 观察样例 11,不难发现可以构造使每一行或列一定有一个位置为 00。我们不妨对于每一列限定这个 00 的位置,使其与任意一个列的位置不一样。不难发现这样也保证了每一行 00 位置的不同。然后,我
阅读全文
摘要:CF1990C Mad MAD Sum 好题。考虑操作一次之后序列的性质,不难发现存在单调性。因为定义为出现至少两次的最大值,而从左到右最大值是可以继承的,所以单升不降。 然后,手玩一下发现之后的操作相当于把整个序列向后移动一位,左边使用 00 自动补齐。特别的,如果一个元素数量不足 \(2\
阅读全文
摘要:CF1990D Grid Puzzle DP 好题。考虑分析两种操作的性质,不难发现操作 11 至多只能涂白 44 个方格,而操作 22 可以涂白的方格取决于这一行的方格数,几乎无上限。 因此,从涂白的方格数考虑,对于黑色方格数量 ≥5≥5 的一行,我们直接使用操作 \(2
阅读全文
摘要:CF1989E Distance to Different 好题。题目要求 bb 数组的数量,但 bb 数组难以直接计算,而 bb 数组和 aa 数组的映射关系并不明显。考虑分析 bb 的性质,并映射到其他数组。 我们发现,bb 数组与 aa 数组中元素的具
阅读全文
摘要:CF1989C Two Movies 贪心。如果某人对两部电影评分不一样,显然取评分高的那一个。如果是 11 和 00 或 11 和 −1−1,那么显然取 11。如果是 00 和 −1−1,显然取 00。 接下来,讨论评分一样的情况。对于 00 和
阅读全文
摘要:CF1989D Smithing Skill 这篇题解是我在赛场上的真实思路,所以可能会比较冗长。但是相较于其他题解,读者可以在这篇题解中理解为什么会想到使用动态规划。我认为,授人以鱼不如授人以渔,理解为什么想到使用动态规划,比知道使用动态规划更重要。 首先,有一个比较显然的贪心。每次合成之后立即融
阅读全文
摘要:P10590 磁力块 有一个很显然的 BFS,对于每一个吸到的新磁力块,遍历序列,把所有它能吸到的磁力块加入一个队列进行扩展。这样时间复杂度是 O(n2)O(n2),不能通过。 考虑影响是否能吸到的两个因素,一个是利用 x,yx,y 计算出的距离,另一个是质量 mm。对于这种问题,经典的做法
阅读全文
摘要:P10496 The Luckiest Number UPD:被叉了,原因是快速幂可能模数很大会爆 long long,改成 __int128 就好了。 考虑用一种比较方便表达的方式表示全是 88 的数字。我们发现,长度为 xx 的全是 88 的数字可以表示为 \(\frac{10
阅读全文
摘要:CF1967B1 Reverse Card (Easy Version) 我们发现 b×gcd(a,b)b×gcd(a,b) 必然为 bb 的倍数,那么 b×gcd(a,b)b×gcd(a,b) 的倍数 a+ba+b 也必然为 bb 的倍数。所以,aa 必然为 bb 的倍数
阅读全文
摘要:P4037 [JSOI2008] 魔兽地图 比较难的树上背包题目。 题目中装备有购买限制,所以二维树上背包状态肯定无法表示。又由于每件装备的合成只与其子节点的合成数量有关,所以需要一维表示这一个装备合成多少个,这样刚好可以进行父子之间的转移。 设状态 f[x][y][z]f[x][y][z] 表示第 xx
阅读全文
摘要:CF1956C Nene's Magical Matrix 被这题送走了,纪念一下。 巧妙的构造题,考虑比较方便处理的方案,假设我们从左上角的顶点开始涂,每次涂一个 1,2,3…n1,2,3…n 的排列。其余方案可以通过这种方案交换数字顺序得到,所以只考虑这种方案。 考虑分析总和最大时矩阵的性质
阅读全文
摘要:CF724G Xor-matic Number of the Graph 直接维护异或和之和,显然不可能。由于二进制位相互独立,我们考虑维护每一个二进制位的出现次数,再乘以位权加入结果。 对于路径的维护,我们参考P4151 [WC2011] 最大XOR和路径,分成主路径和若干个环。记路径 \(1\t
阅读全文
摘要:CF1946C Tree Cutting 容易发现,如果连通块含有节点数的最小值为 xx,并且使用的刀数多于或等于 kk,那么 xx 一定可以成为最后的结果。原因是我们可以通过减少一部分刀数,保留一个最小值的连通块,减少其他的刀数。由于 k≥1k≥1,所以一定可以保留一个最小
阅读全文
摘要:CF1344F Piet's Palette 我们发现,如果两项颜色相同,则把两项都删去,这很符合异或的性质。再结合后面一条两项颜色不同,将这两项替换为与这两种颜色不同的颜色,我们发现需要找到三个数 a,b,ca,b,c 来代表三种颜色,并且满足 \(a\oplus b=c,a\oplus c=b,b
阅读全文
摘要:CF1923E Count Paths 点分治模板题。 假设当前处理的树根为 xx,我们考虑如何统计经过点 xx 的合法路径。 11:存在一个与 xx 颜色相同的点,且这个点到 xx 的路径上没有与之颜色相同的点,那么这个点和 xx 就构成了一条合法路径。 \(2
阅读全文
摘要:P10144 [WC/CTS2024] 水镜 对于任何一段连续上升的区间,我们不需要管它。对于任何一段连续下降的区间,我们只需要用 2L2L 减去每个数就可以化为一段连续上升的区间。因此,对于这两种区间,我们可以看作一个点。 于是,我们发现其实 2L2L 只会被波峰 \(a_{i}\ge a
阅读全文
摘要:SP10502 VIDEO - Video game combos AC 自动机上的动态规划。 由题目中这句话,不难想到 AC 自动机: sisi 在 tt 中出现一次指的是 sisi 是 tt 从某个位置起的连续子串。如果 sisi 从 tt 的多个位置起都是连
阅读全文
摘要:CF1929D Sasha and a Walk in the City 简单树形动态规划。 我们把选取到的点称为黑点,由题意得,一个合法的点集能使树中任意一条简单路径上的黑点数量不超过两个。也就是说,如果黑点数量多于 22,对于任意两个黑点,它们如果在同一个节点的子树内,必然是兄弟关系。否则
阅读全文
摘要:CF1928E Modular Sequence 考虑合法的答案的构成为一个 x,x+y,…x+kyx,x+y,…x+ky 的块加上若干个 xmody,xmody+y,…xmody+kyxmody,xmody+y,…xmody+ky 的块。因为无论加多少次 yy,对 yy 进行一次取模就都被消去了。
阅读全文
摘要:CF1928C Physical Education Lesson 我们发现,每 2k−22k−2 个数构成了一个周期。其中,前 kk 个数为前周期,后 k−2k−2 个数为后周期。我们对于 xx 所处的周期进行分类讨论。 当 xx 在前周期时,它是周期中的第 xx 个元素
阅读全文
摘要:CF1928D Lonely Mountain Dungeons 提供一个三分做法。 假设我们已经知道了分 xx 队,那对于每一个种族,我们就应该尽量平均分到这 xx 个队伍中。我们可以先将总数 cici 平均分,再把余数 rr 分给前 rr 个元素,每个元素分一个 \
阅读全文
摘要:CF1918B Minimize Inversions 诈骗题,点破一文不值。 交换元素 i,ji,j 时可能有以下四种情况: 情况一:ai<aj,bi<bjai<aj,bi<bj,此时总逆序对数加 11。 情况二:ai>aj,bi<bjai>aj,bi<bj,此时总逆序对数不变
阅读全文
摘要:CF1918C XOR-distance 考虑对 a,ba,b 进行二进制分解,在二进制位中进行计算。 设 aiai 表示数 aa 二进制第 ii 位。如果 ai=biai=bi,则不需要对 xixi 进行任何构造。但如果 aiai 不等于 bibi,把 \(
阅读全文
摘要:CF1918D Blocking Elements 如果你做过以下两道题目,那么这道题对你来说会简单得多。 P1182 数列分段 Section II P2034 选择数字 由于题目要求最大值的最小值,考虑二分。 如果我们使用 xx 的费用划分了整个数列,那么我们同样也可以使用比 xx
阅读全文
摘要:P6815 [PA2009] Cakes 三元环计数题。 无向图三元环计数分为三步: 11 :给所有无向边重定向。记录每个点的度数,度数大的点指向度数小的点。如果度数相同,编号小的点指向编号大的点。最后这个图是有向无环图。 22 :打标记。对于图中每一个点 uu,将其相邻的点标记可
阅读全文
摘要:CF1905C Largest Subsequence 首先考虑如何生成一个字典序最大的子序列。我们先考虑找到字符串中的最大元素,然后在其之后找到第二大的元素,重复这个过程,直到达到序列末尾。 我们可以通过记录每种字母的出现位置,从大往小枚举。每碰到一个字母在当前位置之后,将这个字母加入序列,并将当
阅读全文
摘要:CF1875C Jellyfish and Green Apple 我们首先把整块的分完,然后处理剩余的分数块数。 由于我们只能劈成两半,所以约分之后分数的分母只能为 22 的幂,不能包含其他质因数。如果包含,直接输出 -1。 我们每次把剩下的块全部劈成两半,统计刀数,直到块数足够分给 \(m
阅读全文
摘要:P9671 [ICPC2022 Jinan R] Identical Parity 构造题。感觉中上位黄。 对于 kk 为偶数的情况,构造奇偶交替的序列。每次区间向后挪动时,最左边出去的元素和最右边进来的元素奇偶性相同,保证奇偶性不变。这样的序列一定可以构造出来,故 kk 为偶数时直接输
阅读全文
摘要:CF1332E Height All the Same 考虑到可以在一个格子上码上两个方块,易得如果每个格子奇偶性相同,则一定可以到达同样高度。对于任意点对 (x,y)(x,y),我们可以通过找到一条路,路径上可以互达的两点有一边相邻,x→b→c⋯→yx→b→c⋯→y,每次增加相邻两
阅读全文
摘要:P9588 队列 考虑转化问题,将原问题转化为一个长度为 qq 的序列。序列中 xx 表示一段 1∼x1∼x 的区间。 操作 11 每次增加时,输入 xx,在数组末尾添加一个元素 xx,并记录时间 tt 和前缀和 ss。时间表示这个元素在第 \(t
阅读全文
摘要:CF1809D Binary String Sorting 贪心。由于每次操作的代价都很大,所以需要优先减少操作次数,然后尽量多使用交换操作。 易得交换操作最多只会发生一次,因为每次交换操作只能消除一个逆序对,当存在两个或多个逆序对时,可以通过删除操作来减少更多的逆序对,减少操作次数。当只存在一个逆
阅读全文
摘要:CF1809C Sum on Subarrays 一道黄题做了一上午我可以退役了。 构造题。由于直接构造并不是那么容易,所以考虑在一个初始元素全为 −1−1 的序列上构造。 考虑将一个负数改为正数 10001000 对答案造成的贡献(因为取 10001000 计算比较方便)。设在放置这个正元素之
阅读全文
摘要:前言 感觉是非常优秀的题目,写一篇题解记录一下。 HDU-7458 旅行(on Vjudge) 题面 题目描述 有一棵 nn 个结点的无根树,每个结点都有对应的类型 cici 和权重 wiwi ,你需要在这棵树上规划若干次旅行。 对于一次旅行,你将从一个树上的一个结点出发,沿着树上
阅读全文
摘要:UVA302 John's trip 给定一张图和起点,求从起点开始能否把每条边遍历一次后返回起点,并输出字典序最小的路径。 欧拉回路裸题,若可以达到题目的要求,则图中必然存在一条欧拉回路。我们可以记录每个点的连的边数,如果出现一个点连的边数为奇数,那么图中必定不存在欧拉回路,输出 Round tr
阅读全文
摘要:P9236 [蓝桥杯 2023 省 A] 异或和之和 首先,异或有一个重要的性质: a⊕b⊕b=aa⊕b⊕b=a因为 bb 的二进制位一定与自己一样,根据异或的定义,得出 b⊕b=0b⊕b=0,进而推出这个式子。 有了这个式子,区间异或和就可以像前缀和一样处理了
阅读全文
摘要:P8112 [Cnoi2021]符文破译 借用 KMP 思想优化的动态规划。 首先,用 dp[i]dp[i] 表示把前 ii 位的字符完全匹配需要的最少词缀数(下标均从 11 开始)。那么,我们可以从点 i+1i+1 开始,向后逐位与字符串 TT 比较。设此时匹配到了 TT
阅读全文
摘要:CF576A Vasya and Petya's Game 数论思维题。 根据唯一分解定理,可以知道,如果一个数的各个质因数的数量确定了,这个数也就确定了。 每次询问的中,如果 xx 是 yy 的倍数,证明 xx 中含 yy 的所有质因数。我们可以枚举质数,判定 xx
阅读全文
摘要:P8925 「GMOI R1-T2」Light 让我们好好观察样例解释的这一张图: 左边第 11 个像到 OO 点的距离 :L×2=2LL×2=2L 右边第 11 个像到 OO 点的距离 :R×2=2RR×2=2R 左边第 22 个像到 OO 点的距离
阅读全文
摘要:CF162J Brackets 看到两位用栈匹配括号的大佬,这里提供另一个思路。 对于括号的问题,我们考虑区间DP。 设状态 dp[i][j]dp[i][j] 表示使区间 [i,j][i,j] 内的括号匹配需要添加的括号数量,则转移方程如下: 11 :区间两边括号匹配时,因为最外层不需要匹配,需要添加的
阅读全文
摘要:P8754 [蓝桥杯 2021 省 AB2] 完全平方数 首先,要使 nxnx 为完全平方数,需要知道完全平方数的一个性质:完全平方数的质因子的指数一定为偶数。 证明: 设 √nx=b√nx=b ,bb 是正整数,则根据唯一分解定理,可得: \[b=p_{1}^{k_{1}}\t
阅读全文
摘要:CF1182B Plus from Picture 写在前面 为什么在已经有 1212 篇题解后,我还是要写这篇题解? 因为这篇题解提供一个码量较小,且时间复杂度严格 O(wh)O(wh) 的做法,目前这种做法题解区没有。 进入正题 设 cnt[i]cnt[i] 表示地图中的 * 周围四联通有 \(i
阅读全文
摘要:P8800 [蓝桥杯 2022 国 B] 卡牌 我们看到这样一句话: 请问小明最多能凑出多少套牌? 很明显用贪心可以做了。 首先要理解一个东西,卡牌套数等于最少的卡牌牌数。因为一套卡牌需要所有卡牌各一张,所以对于最少的卡牌,它如果只有 xx 张,则只能有 xx 套卡牌含有最少的卡牌。再多
阅读全文
摘要:前言 从 一些快速笔记 中分离出来的,因为这一知识点写的内容太多了,可以拿出来专门开一篇学习笔记。 Slope Trick 不是斜率优化!Slope Trick 不是斜率优化!Slope Trick 不是斜率优化! 此类知识点大纲中并未涉及,所以【8】是我自己的估计,后带星号表示估计,仅供参考。 S
阅读全文
摘要:前言 平衡树的笔记好像一直搁置着,但是这个内容实在是太重要了,平衡树就搁着吧。 决策单调性 在动态规划时,若转移时对于一个状态是单点对单点转移,且令 kiki 表示状态 ii 的最优决策点,有 ∀i<j∀i<j 有 ki≤kjki≤kj,则称这个动态规划的过
阅读全文
摘要:前言 后缀数组是一个很好用的字符串算法,可以解决的问题远远不止后缀。是后期字符串的重要基础,值得学习。 学习后缀数组的关键是弄清楚每个数组的意思,不然就很难理解。 学习串串好快乐啊。 基数排序 基数排序是一种 O(n)O(n) 的稳定排序算法,我们将会在后缀数组中用到它。基数排序用于给多关键字的元素
阅读全文
摘要:前言 状态压缩 DP 是一类常用的 DP 方式,思维难度不是很大,但需要一点卡常和实现技巧。比较容易掌握,是一个骗分的好东西。 状态压缩DP 状态压缩 DP 通常用来处理 DP 过程中与具体状态相关的问题。这种情况下,我们通过二进制压缩使状态可以成为 DP 的一个维度,从而进行动态规划。 因此,状态
阅读全文
摘要:前言 基环树是一类特殊的树形结构,这一类问题经常在省选阶段考察。这一类题目一般有特定的解决方法,积累经验,即可快速解决这类题目。 基环树 基环树:在一棵树上增加一条边,使树上存在且仅存在一个环,这样的树叫做基环树。 找环算法 遍历一整棵树,将访问到的节点入栈,离开时退栈。如果存在一个点可以到达正在栈
阅读全文
摘要:前言 教练说过,树形 DP 是一个抽象的东西,很多状态比较难以理解,后面具体的学习方法,忘了。 UPD on 2024.11.212024.11.21:修复了例题 55 的假做法和假代码。 普通树形 DP 树形 DP 是一类在树上的动态规划,通常以节点位置作为阶段,树中的父子关系为转移,边界状态是叶子节点
阅读全文
摘要:前言 线性基是一个好用的东西,多用于维护异或类操作。以后碰到异或类题目,可以考虑线性基,好写好调。 此类知识点大纲中并未涉及,所以【9】是我自己的估计,后带星号表示估计,仅供参考。 线性基 定义 向量:向量是一种既有大小又有方向的量。 线性组合:设 \(a_1,a_2,\dots a_e(e\ge1
阅读全文
摘要:前言 太菜了,现在才写线段树的学习笔记。 由于线段树学习历时较长(大约 11 年),码风可能会严重不协调。以后我的线段树码风以线段树讲解板块为准。 长文警告:本文一共 14651465 行,请合理安排阅读时间。 线段树 线段树是一种基于分治思想的二叉树结构,用于统计区间信息。与树状数组相比,线
阅读全文
摘要:前言 WC 2024 的知识点,补个档。寒假时间紧促,这篇博客是边学边写的。 此类知识点大纲中并未涉及,所以【8】是我自己的估计,后带星号表示估计,仅供参考。 动态 DP 动态 DP 用于解决需要求出的值可以使用树形 DP 求出,并要求支持单点修改点权的操作。 给定一棵 nn 个点的树,点带点
阅读全文
摘要:前言 可持久化线段树,又称为主席树,用于维护静态区间权值信息。例如,在区间 [l1,r1][l1,r1] 中查询权值在 [l2,r2][l2,r2] 的数的个数。位置区间套权值区间的问题,多使用这个算法。 可持久化线段树 可持久化:数据结构不仅需要维护当前的版本的信息,还需要支持查询之前的历史版本的信息
阅读全文
摘要:前言 矩阵在 OI 中运用广泛,是一个很重要的内容。正是因为我不会矩阵,所以 WC2024 时讲动态 DP 我没办法听,所以矩阵真的很重要。 由于我实力有限,这里只能介绍一些矩阵的基本应用。 矩阵定义 矩阵:将 n×mn×m 个数排列成 nn 行 mm 列的形式称为一个 \
阅读全文
摘要:前言 中国剩余定理是大玄学,我终于懂得了龟速乘有什么用。没什么逻辑 实际上大纲没有专门列出同余本身的整体评级,但是大部分知识点都是 77 级,最后就自己评为 77 级。 UPD on 2025.2.182025.2.18 :新增了更深入理解裴蜀定理的内容和一道例题。 长文警告:本文一共 \(117
阅读全文
摘要:前言 网络流是图论中博大精深的一个分支,我自己没有学得很精通,所以这篇博客只能讲一部分内容。 网络流算法本身不会被太多考察,重点还是在于建图的思维能力。 最大流 给出一个包含 nn 个点和 mm 条边的有向图(下面称其为网络) G=(V,E)G=(V,E),该网络上所有点分别编号为 \(1 \
阅读全文
摘要:前言 哈希是一种常用的数据处理方法,可以牺牲极低的错误率来换取 O(1)O(1) 处理本来需要 O(n)O(n) 处理的东西,例如需要用 O(1)O(1) 来比较两个 O(n)O(n) 的东西。 基础哈希 数值哈希 对于一个较大的数 xx,我们考虑通过哈希将其降低为一个较小的值: \[has_
阅读全文
摘要:前言 此类知识点大纲中并未涉及,所以【8】是我自己的估计,后带星号表示估计,仅供参考。 莫队主要运用的是离线处理思想,是离线处理思想最经典的体现。离线处理思想在大纲中的评价是 88 级,所以我认为离线处理思想就是指莫队,就评价 88 级。 由于学习间隔较长,所以可能代码码风不太相同,尽情
阅读全文
摘要:前言 从 这篇博客 中分离出来的。 欧拉函数是一个常用且好用的数论函数,有许多神奇的性质。 欧拉函数 欧拉函数:对正整数 nn ,欧拉函数是小于 nn 的正整数中与 nn 互质的数的数目,记作 φ(n)φ(n) 。 欧拉函数的性质: 11:\(\varphi(1)
阅读全文
摘要:前言 WFLS 暑假集训 Day10 2-SAT 是一个比较难的算法,属于省选算法,当时学的不好,可能讲的不是很透彻。 2-SAT 有 nn 个布尔变量 x1∼xnx1∼xn,另有 mm 个需要满足的条件,每个条件的形式都是 「xixi 为 true / false 或
阅读全文
摘要:前言 WFLS 暑假集训 Day 5 Day 6 Day 8 Day 9 Tarjan 是个巨佬,快来膜拜他 orz。 长文警告:本文一共 10921092 行,请合理安排阅读时间。 强连通分量 强连通分量针对有向图,本篇目内图指有向图。 定义 强连通:如果一个图中任意两点可以相互到达,那么称这个图
阅读全文
摘要:前言 WFLS 暑假集训 Day 11 此类知识点大纲中并未涉及,所以【6】是我自己的估计,后带星号表示估计,仅供参考。 图论拆点处理后效性和动态规划升维处理后效性有异曲同工之妙,所以以后动态规划的题我都用图论拆点做。 图论拆点 在动态规划中,我们通过升维来解决后效性。在图论中,如果在一个点上需要维
阅读全文
摘要:前言 WFLS 2023 暑假集训 Day 2 Day 3 做完一部分老师的 LCA 题单后,我觉得人都要升华了。教练说前几年正是考这个玩意的时候,所以出的题目弯弯绕绕。我的评价:不如字符串。 LCA LCA 的定义与性质 最近公共祖先(LCA):树上任意两点 i,ji,j 最近的公共祖先,记作
阅读全文
摘要:前言 欧拉路径和一笔画问题有关,问题的本质也是奇点的数量。不算很难,而且考的也不多,主要还是在第一轮考。 欧拉路径 如果在一个图中,存在由 ii 点出发,把每条边遍历一次,最后到达 jj 的一条路径,则这个图中存在欧拉路径。这条路径叫做欧拉路径。 若最后回到起点,即 i=ji=j,那么
阅读全文
摘要:前言 树上操作是 OI 重要的一环,树的 DFS 序、直径、重心这一堆东西也是树上操作的基础。树的 DFS 序可以把树上问题转化为区间问题,树的直径的性质经常是解题的关键,树的重心可以防止一些树上算法复杂度退化——它们都是玄学但有用的算法。 树的DFS序 在一棵树上进行 DFS,按访问顺序(时间戳)
阅读全文
摘要:前言 四大玄学玩意:SPFA,动态规划,组合数学,AC自动机。 前置知识: 【5】KMP学习笔记 【6】字典树学习笔记 AC 自动机 给定 nn 个模式串 sisi 和一个文本串 tt,求有多少个不同的模式串在文本串里出现过。 这是一个多模字符串匹配问题,对于这类问题,我们一般用
阅读全文
摘要:前言 Manacher 算法是最好写的字符串算法。——教练 暴力求法 给出一个只由小写英文字符 a,b,c,…y,z 组成的字符串 S,求 S 中最长回文串的长度 。 暴力算法 \(1\
阅读全文
摘要:前言 逆元是模运算中很常用的计算方式,非常重要,是很多数论的辅助算法。 定义 在模 m 的意义下找到一个数 x 使得 ax≡1(modm),则称 x 是 a 在模 m 的意义下的逆元,记作 inv(a)。 特别的,当 \(m\mi
阅读全文
摘要:前言 关于今天发现自己连快速幂都忘记怎么写这件事 这篇博客是组合计数基础,由于大部分内容都是 6 级,所以我就给整个提高级的组合数学评了 6 级。 组合计数基础 加法原理与乘法原理 加法原理(分类计数原理):完成一件事有 n 类方法,第一类办法有 mi 种,第二类办
阅读全文
摘要:前言 分块是一种重要的高级数据结构思想,核心为大段维护,局部朴素。 顺带一提,由于个人技术水平,本篇博客的难度并没有标题所述的 8 级。分块还是很难的。 分块 分块,是“优雅的暴力”。 分块的基本思想是把数据分为若干个块(一般块长为 √n),一个块内的数据在操作中具有相同
阅读全文
摘要:前言 有向无环图和拓扑排序直接关联到中后期的图论建模思想,是很重要的基础知识。这个如果不彻底弄懂,以后图论会很困难。 有向无环图 正如其名,一个边有向,没有环的图,也叫DAG。 DAG图实际运用:描述含有公共子式的表达式及工程或系统的进行过程时的有效工具。 一个较大的工程被分成若干个子工程,这些子工
阅读全文
摘要:前言 此类知识点大纲中并未涉及,所以【6】是我自己的估计,后带星号表示估计,仅供参考。 差分约束系统属于图论建模,有一定的思维难度,而且比较绕,同时题目中的隐含条件也非常多,是一个比较难的知识点。 差分约束 给出一组包含 m 个不等式,有 n 个未知数的形如: \[\begin{ca
阅读全文
摘要:前言 树状数组是我学的第一个高级数据结构,属于 log 级数据结构。 其实现在一般不会单独考察数据结构,主要是其在其他算法(如贪心,DP)中起到优化作用。 长文警告:本文一共 995 行,请合理安排阅读时间。 lowbit函数 lowbit函数用于求解一个数二进制位最右边的 \(1
阅读全文
摘要:前言 此类知识点大纲中并未涉及,所以【5】是我自己的估计,后带星号表示估计,仅供参考。 坐标规则类DP 通式 dp[i][j]=max/min{dp[i−k1][j−k2]}+w(i,j)其中 dp[i−k1][j−k2] 是各个决策,\(w(i,j
阅读全文
摘要:前言 WFLS 2023 寒假集训 Day4 Day 5 搜索剪枝的复杂度很玄学,最好还是能剪枝就剪枝,只要不是错误的,总没有坏处。 最优化剪枝 当题目要求求最优解的时候,此时如果已经求出一个可行解,那么答案超过这个可行解的分支一定不是最优解,所以这些分支可以剪掉。 找到可行解 if(check()
阅读全文
摘要:前言 WFLS 2023 寒假集训 Day2 大纲里字典树在数据结构里,但是个人认为应该属于字符串,就把它放到字符串里了 字典树 字典树,又称Trie树,字母树。每个顶点代表一个字符,从根节点到叶子节点的路径上所有的节点的字符连接起来,就是一个字符串。 字典树的优点:利用串的公共前缀来节省内存,加快
阅读全文
摘要:前言 WFLS 2023 寒假集训 Day1 KMP好闪,拜谢KMP! 暴力算法 单模字符串匹配算法 设 i 为主串 s(文本串)指针,j 为子串 t(模式串)指针,最开始 i,j 都从 0 开始,如果 s[i]==t[j] 那么 \(i++\
阅读全文
摘要:前言 鸽了很久,2023/1/5 开始,2023/1/21 才完工。 中途去集训了,没时间来补漏洞。 单调队列 单调队列是一种非常实用的数据结构,可以用于查询一个定长区间在以一定速度向后滑动,并查询区间内最值的问题(具体见例题 1 )。时间复杂度非常低,总体是 \(O(n)\
阅读全文
摘要:前言 教练阳了,这次上的是录播课(悲 希望教练早点好起来 区间DP 区间DP,字面上讲,就是以一个区间为状态进行转移的动态规划。 在这类动态规划中,一般设状态 dp[i][j] 表示区间 [i,j] 的答案。 区间DP的题目的特征: 1 :数据范围较小,一般 \(\le500
阅读全文
摘要:前言 学习了简单背包DP,这一篇博客主要是讲背包问题进阶。所以这篇博客的难度系数很有可能不止 5 级,个人评价是 6 级。所以在基础背包部分不会讲太多,会直接使用一维背包。 基础背包 01背包 给定 n 个物品,一个容量为 V 的背包,每件物品只能用一次,有两个属性:
阅读全文
摘要:前言 学习ST表,主要是倍增思想,可以理解为倍增优化后的DP。写在这里,一方面方便自己以后复习,另一方面给其他人参考。 UPD on 2023/3/21 :修改了格式,使格式与其他的学习笔记统一。 倍增 倍增引入 与其说倍增是一种算法,不如说倍增是一种思想。 倍增的时间复杂度和二分是一样的,都是 \
阅读全文