摘要:
题目链接:[Ynoi Easy Round 2021] TEST_152 题目比较抽象,翻译一下。就是有 \(n\) 个操作,每个操作为 \((l_i,r_i,v_i)\) 表示把长为 \(m\) 序列 \(a\) 的 \([l_i,r_i]\) 上的数覆盖为 \(v_i\)。而查询为 \([tim 阅读全文
摘要:
题目链接:死去的 Elo 突然开始攻击我 容易知道,如果暴力对某个区间而言进行查询,我们可以考虑使用并查集,开一个桶,每次添加一个数 \(val\),那么如果已经存在了 \(val-1\) 或者 \(val+1\) ,我们可以考虑合并 \(val\) 与 \(val-1\) 或者 \(val+1\) 阅读全文
摘要:
题目链接:ZAB-Frog 基于一个根据距离第 \(k\) 大的事实: 容易知道,对于红色的点而言,与它相近最近的 \(k\) 个点是连续的。而第 \(k\) 远的要么是最左侧要么是最右侧。而我们注意到原数组是升序,那么考虑红色点往右走到新的位置,这些蓝色单点整天有什么影响: 左边的点离它更远了。 阅读全文
摘要:
题目链接:作业 其实可以类似“HH的项链”转化为偏序问题再 cdq 分治。不过这题感觉莫队然后值域分块很好写啊,基本不用动脑。 考虑查询的两个信息: \(a \le x\le b\) 的 \(x\) 的个数。 \(a \le x \le b\) 的 \(x\) 的种类。 考虑优化莫队插入和查询复杂度 阅读全文
摘要:
题目链接:Fountain 很不错的基础算法组合题:单调栈+倍增 首先考虑到一个事实,就是下面第一个比当前半径大的位置会成为移动的第一次落脚点,抽象下就是下面出现的第一次比自身大的半径,这个问题显然可以单调栈轻松解决。 第二个点就是我们知道了单次移动的第一个位置,现在问你多次移动到的位置,并且还要保 阅读全文
摘要:
题目链接:Atcoder 或者 洛谷 对于解决二维区间内的最值类型问题,我们常常有一类特别好用的方法,就是悬线法,它可以看做是单调栈的子集,但更加好理解和书写。 对于悬线法,我们有一个常见的模型,找出面积最大的符合题意的最大的矩形: 例题 P4147 玉蟾宫。对于悬线法而言,我们需要理解什么是悬线: 阅读全文
摘要:
题目链接:理想的正方形 比较明显的,我们可以用二维 ST 表解决,具体的二维 ST 表的实现,只需要知道一点: 对于 \(st[i][j][t]=max(i \sim i+2^t,j \sim j+2^t)\),表示的是如图所示的大正方形范围内的最值,它可以拆成从四个小正方形的左端点走 \(2^{t 阅读全文
摘要:
题解:序列操作 比较综合的 ds 题,综合了线段树常见的几种操作:维护最大子段和、区间翻转、区间求和、区间覆盖 。 维护子段和常见的我们维护三类东西: 前缀最长连续段、后缀最长连续段、当前区间上的最大子段和。 在 pushUp 时,对于一个区间的前后缀最值首先等于左右子树的最长前后缀,如果填满了一棵 阅读全文
摘要:
题目链接:CF 或者 洛谷 一道经典的类型题,把这种类型的题拿出来单独说一下。 注意到问题中涉及到需要维护 \(a_{x+k\times step}\) 这样的信息,这样的信息很难用树型结构维护,比较容易用块级结构维护,我们注意到其实是每次这种步长 \(+step\) 的信息很难维护,我们考虑一类特 阅读全文
摘要:
题目链接:Yuno loves sqrt technology II 很早以前觉得还挺难的一题。本质就是莫队二次离线,可以参考我这篇文章的讲述莫队二次离线 P5501 [LnOI2019] 来者不拒,去者不追 题解 。 注意到左右两边莫队的端点移动,贡献效果是不一样的: \(r \rightarro 阅读全文