02 2024 档案
摘要:题目链接:Spoj 或者 洛谷 挺水的经典题,关于 问题个人比较喜欢 。我们将两个匹配串用一个不曾出现的字符拼成一整个串,然后跑 求出一些基本信息。对于 答案,一定是两个相邻的 数组中取到。因为我们知道 数组表示的
阅读全文
摘要:题目链接:CF 或者 洛谷 比较朴素的题,注意到这个涉及到子树变化,我们考虑优先处理出 序,方便处理。 注意到第一个问题较为繁琐,我们着重解决下第一个问题。在树上问题,我们这种间隔点常常使用 进行区分。 根的 为奇数,那么对自己子树范围内的奇数 \
阅读全文
摘要:题目链接:拦截导弹 约定: 本题中提到的 和 不是严格单调,而是非严格单调,即为 。 比较神奇的题,问的东西比较多,我们逐渐拆分: 对于第一个问题而言,这个 dp 方程是很好写的: \[dp[i]=\max{dp[j]}+1 (i<j,h[
阅读全文
摘要:题目链接:CF 或者 洛谷 注意一些计算即可 。 一个点,会 完以这个点为根的子树,再 下一个兄弟节点为根的子树。 对于两个兄弟节点而言,它们的相对 序仅有两种,谁前谁后。 对于本题而言,优先关注
阅读全文
摘要:确保你已经会普通的分块和常见的线段树之类的知识点。 值域分块背景阐述 在树类,我们都有一类特殊的树 权值树。传统的,无论是线段树还是树状数组之类的,我们都是以序列下标所在的序列轴作为核心轴维护对象,维护的信息即为序列轴上的数。而权值树是一类特殊的树,它的轴则是数轴,数轴上的数则表示当前数的个数。你可
阅读全文
摘要:题目链接:排队 水紫, 不大,树套树或者分块都能做。分块的话,最优序列分块套套值域分块最优。观察到是可差性问题维护,即权值数量维护,那我们就 树状数组套权值线段树 即可。由于 不大,我们可以不用回收标记,直接数组空间开大点就行。我们预处理出初始逆序对,每一次操作都是基于它的差分
阅读全文
摘要:题目链接:CF 或者 洛谷 本题难点在于换根 LCA 与换根以后的子树范围寻找,重点讲解 先说操作一,假如原根为 变为了 ,又变为了 ,那么其实 和 都可以看做由 变化而来的,即 与 \(1
阅读全文
摘要:题目链接:忘情 大概是本题为数不多的李超树解法,凸包显然太经典,不再赘述。 有道差不多的弱化版题:Atcoder Educational DP Contest 题解 的 题,也就是最后一题,差不多的区间 dp 使用凸优化斜率 dp,不过那题我也是李超树写的,比较喜欢李超树。凸优化参照它人
阅读全文
摘要:题目链接:分散层叠算法 比较妙的东西,在很多涉及到若干个有序块的 查询的 ynoi 题中都有妙用。这里简单提提。 两种暴力解法在其他文章已有涉及,在此不再赘述。讲讲具有该怎么写这个算法,首先我们需要预处理出新的 个序列,不妨记每个为 。\(M_{n}=L_n
阅读全文
摘要:题目链接:逛森林 很早就想写写倍增优化建图,尤其是这题,奈何之前知识点没点够,本题线段树优化建图要优一些,不再赘述,没注意 是 ,挂了 多发才发现。后续再详细讲解倍增优化建图,这里简述本题做法。 倍增优化建图其实和线段树优化建图恰不多的思想,为倍增求 \(LCA
阅读全文
摘要:介绍 四毛子算法是一种可以接近 级求解 问题的算法,正宗的四毛子算法涉及到比较多的知识点且常数较大,我们常常使用朴素的简化版四毛子算法。 正宗四毛子算法引入 1. 什么是笛卡尔树 笛卡尔树如果你接触过平衡树,那将并不会陌生,它是 的一种,当然常常
阅读全文
摘要:题目链接:维护数列 比较不好码的题,首先确保自己会一种文艺平衡树的书写,这点因人而异,比较推荐初学者学 平衡树,坑比较少,比较好码,写平衡树合并、持久化类的题时,也比较好写。注意到空间需求比较大,还涉及删除,我们的删除用各种树类数据结构中最常用的回收标记用于新的节点开辟。 对于添加一
阅读全文
摘要:题目链接:动态逆序对 常见经典题,理解一个数对逆序对贡献计算即可。 对于一个数而言,它在一个序列中的逆序对有两部分贡献,一部分为前面比它严格大的数,另一部分为后面比它严格小的数,有道二莫题也是基于此去考虑的。 考虑最开始知道了总逆序数,每次删除一个数逆序数会减少两部分值,显然就是上述说的两部分值,那
阅读全文
摘要:题目链接:CF 或者 洛谷 常见知识点组合经典题。 首先,一眼数位 dp 类型题,考虑需要处理些怎样的判断合法数位信息。 经典操作 对于跟整除有关的判断,数位 dp 为了减少使用空间,都可以考虑记忆化模数减少空间开销。 对于整除若干个数,即整除这若干个数的最小公倍数即可,是一个非常常用的结论,证明也
阅读全文
摘要:题目链接:MET-Meteors 看完第一反应头大,第二反应整体二分完全能做。站在整体二分的视角思考问题,要先清楚一点,本题哪个是修改,哪个是查询。显然一开始给的 个数的容量,为需要查询的操作,而 场流星雨即为修改操作。然后第二步观察查询是否具有单调性,显然是有的,第 \(i
阅读全文
摘要:题目链接:CF 或者 洛谷 比较经典的题目 看到存在随机数据以及区间赋值先别急,我们发现第四个操作是很难办的,第四个操作貌似只有暴力才好做。这个时候我们可以考虑使用珂朵莉树来做,这题也是珂朵莉树的出处。使用平衡树去写珂朵莉树的话,那么随机数据下,连续段的期望为 个,所以使用平
阅读全文
摘要:题目链接:采花 这题数据加强到卡了 的可持久化线段树在线做法,先给只 tle 了最后一个点的代码: 卡常参照代码 #include <bits/stdc++.h> // #pragma GCC optimize(2) // #pragma GCC optimize("Ofast,no
阅读全文
摘要:题目链接:CF 或者 洛谷 本题拓扑排序不再赘述,来说说字符串哈希怎么做这题。 本篇以另一种角度剖析题目背景,并不追求最优,例如有些地方其实可以暴力判断,主要以构造的角度阐述,顺便感谢灵茶山的朋友的讨论。 结论 三个串及其以上必定能构造出最初的那个串。 下面进行证明: 首先一个串,显然有多种可能,我
阅读全文
摘要:题目链接:P5350 序列 与 P5586 序列 加强版 比较不难的可持久化文艺平衡树? 有道弱化版:数组操作 不过弱化版没有随机数据,很显然 ODT 会直接被卡,这题数据随机倒是能用 ODT 做一下,而且码量也比较小,可以自己写写,或者参照我给的弱化版我给了这题部分操作的 ODT 写法。我们还是来
阅读全文
摘要:题目链接:列队 半年前 mark 的题,结果现在一下子就会做了。顺便写写我的手玩过程和复杂度说明。 考虑比较特殊的情况: 比较特殊的,发现从黑色到红色区间我们无论咋选择,由于 ,这玩意如果 表示红色的一边,那
阅读全文
摘要:比赛链接:Atcoderr 或者 题单 A:Frog 1 常规线性dp,注意到对于每个落点来说,青蛙只能由第 个石头或者第 个石头转移得到,那么我们让 为 当跳到第 个石头上的最小费用。此时显然有: \[dp_i=\min(dp_{i-
阅读全文
摘要:题目链接:充满了希望 一开始以为是传统老题,结果看到有个交换单修操作,ODT 这题试了下,应该 了,毕竟有单修,很难保证之前的 级复杂度。有些较为智慧的解法确实不好思考,说个很简单的做法,这里没有问颜色数,而是问的颜色具体情况,那就比之前的很多题简单太多了。颜色的具
阅读全文
摘要:题目链接:CF 或者 洛谷 比较不错的题,出现奇数次出现的这种问题,比较容易想到一种运算,那就是异或和运算。 如果一个区间上一个数出现偶数次,则它对于异或和的贡献为 ,那么很显然,我们维护下区间异或和即可判断一个区间上是否存在出现奇数次的数。然后我们注意到 \(1 \oplus 2 \op
阅读全文
摘要:题目链接: GOSICK 前置知识点:莫队二次离线、根号分治、调和级数 我的评价是逆天题,不愧为 第十四分块,拥有这些前置知识点可以让你比较快的思考出本题正解,然而本题独特的空间限制,逼迫你写出更多卡常细节代码。 好多人搞了两个数组单独处理特判,其实莫得必要的。先说一点常识性的东西
阅读全文
摘要:题目链接:帕鲁大陆迷路的一天 前置弱化版:P3604 美好的每一天 题解 一个非常简单的普通莫队解很容易写出来,具体的看我前置弱化版题解,然而这个复杂度高达 ,显然无法通过强化版。 一种看上去很正确的 “假解” 我们思考如何去掉这个 ,我们猜想: 能够
阅读全文
摘要:题目链接:美好的每一天 经典题,这种字符串重排以后回文,优先考虑异或操作。考虑对一个字符串状态压缩,每个字符表示为 ,然后将它们异或起来就可以得到一个字符串的状态压缩情况。 考虑每一位异或情况,如果为偶数个单个字符则为 ,奇数则为 ,注意可以重排,那么当
阅读全文
摘要:题目链接:Atcoder 或者 洛谷 比价朴素的题,首先有暴力的想法就是树套树或者分块。这两种就不再赘述,这里来正式提提 主席树 的本质而不再停留在板题找第 大上。 对于可差性问题和传统问题不同,我们对于可差性问题往往都有更好的优化方案。例如对于树类问题来说,可差性问题我们的 主席树 其
阅读全文
摘要:题目链接:CF 或者 洛谷 感觉很多人写太复杂了,其实感觉这题性质很好的。。询问是否可以分为三段 。考虑枚举 ,由于后缀 具有单调性,所以我们可以双指针轻松拿到这样一个模型: 因为后缀 具有单调性,通过双
阅读全文
摘要:题目链接:CF 或者 洛谷 这题很简单,看到颜色数,HH的项链?树,树上的HH的项链?带修,树上的镜中的昆虫? ,噢,easy 了。 考虑一类信息,表示有和无,对于某种颜色来讲, 表示无或者有,而或运算让我们从小区间的有无情况反映到大区间的有无情况。一种暴力的
阅读全文
摘要:题目链接:冰红茶 比较有意思的套路题(前提是接触过) 首先,一个最基本的线段树包含两种操作的板子要会,分别为区间赋值与区间加,同时维护区间最值。这个挺简单的,区间赋值优先级高于区间加,可以将区间加覆盖为 以后再进行加就行了。其实就是这个题:P1253 扶苏的问题。 看到操作
阅读全文
摘要:题目链接:CF 或者 洛谷 官解看上去挺智慧的,来点朴素的解法。我们来当做纯 ds 题去做。首先明确一点,图中若干个点关于最小连联通树的这个问题可以考虑 ,我们有一类东西叫 重构树。这玩意其实只需要记住它的性质和建树方式即可,证明其实也是比较简单的,基于 \(k
阅读全文