摘要:
一道线段树合并的题。 首先我们发现,如果我们交换了两棵子树,影响到的逆序对数量只会是这两棵子树交换之后数列改变的逆序对数量,对前面的数列和后面的数列并没有影响,对这两棵子树内部也没有影响,因为逆序对只关注相对位置及数的大小。 据此我们先建树,然后对于每个点整一棵值域线段树维护子树内的数,这个过程可以 阅读全文
摘要:
一些 Update Update 2022/1/25:修正了 Delete 的代码。 1. 前言 本篇博文是作者学习 K - D Tree 时候的学习笔记。 K - D Tree,是一种实战运用中比较不错的数据结构,通常用来骗分或者是部分题的正解,然而复杂度玄学并且常数大。 那为啥还要学 K - D 阅读全文
摘要:
1. 前言 本篇博文是博主学习李超线段树的学习笔记。 2020/12/21 的时候我在 数据结构专题-学习笔记:线段树 中说要写 5 篇线段树博客,第 5 篇是李超线段树,结果鸽子到现在才写( ~~众所周知这篇博文是线段树算法总结&专题训练5~~ 李超线段树也是一种线段树,但是这个线段树主要做的是这 阅读全文
摘要:
一道线段树题目,思路很巧妙。 首先先转化一下题意,发现如果后面的楼房能够被前面的挡住,一定是后面楼房的斜率比前面楼房小,斜率就是 $\dfrac{H_i}{i}$,于是这道题变成了单点修改,全局查询哪几个点斜率是前缀最大值中的最大值。 维护两个值 $ans,Maxn$ 分别表示只存在这个区间时的答案 阅读全文
摘要:
一道奆数据结构题,需要有较高的码力和基础的数据结构。 一看过去就会发现这是道数据结构题,然后这道题实际上就是平衡树的板子题只是有各种奇怪的操作而已。我用的是 FHQ Treap。 其实吧这道题本来我不打算写题解的,毕竟还是比较显然的数据结构题,但是这道题的众多坑点让我还是决定写篇题解,本篇题解采用拆 阅读全文
摘要:
一些 Update Update 2021/12/16:修改垃圾回收部分的描述,改为更一般的描述空间回收并且加了一些解释说明。 1. 前言 线段树合并,是一种听起来高大上实际上难度并不大的算法,专门用于一些 DS 题目,可以在一定的复杂度内合并两棵线段树,这过程中有时会用启发式合并。 当然,如果你学 阅读全文
摘要:
一道虚树题,但是做完之后发现跟虚树半点关系没有,反而更像思维题。 首先默认读者会虚树,然后会发现这道题有一个朴素做法就是对于每一次操作完之后的点我们都建一棵虚树,然后这个虚树上面的 DP 是简单的。 然后这个复杂度最坏是 \(O(nm)\) 的,显然会炸,于是我们要想想办法。 发现实际上我们没有必要 阅读全文
摘要:
1. 前言 虚树,主要是用于一类树上问题,这类问题通常是需要取一些关键点,然后要在这些关键点和其 LCA 上做一些奇怪的玩意。 关键前置知识:LCA。 2. 详解 2.1 虚树定义 首先我们需要知道虚树是什么: 现在给出一棵 \(n\) 个点的树,从中选取出 \(k\) 个关键点,这些关键点以及其两 阅读全文
摘要:
一道分块题,应该是 Ynoi 题里面为数不多的不卡常题(?),反正我没卡就过了,这道题 Idea 不错。 前置知识:根号做法的弹飞绵羊,下面认为读者已经会了这个做法。 首先类似于弹飞绵羊,我们设一个 \(Top_i\) 表示当前这个点不断往前跳,跳到这个块的最前面的位置(当然也可以跳出块外第一个位置 阅读全文
摘要:
看到 Ynoi 题,就要想到根号算法 + 卡常。这什么毒瘤卡常题() 显然对序列分块,这样可以维护查询,但是怎么修改呢? 考虑到修改操作的步长为 \(x\),那么设一个阈值 \(p\),对于 \(x \geq p\) 暴力跳暴力修改,对于 \(x < p\) 另外想办法,实际上就是一个根号分治思想。 阅读全文
摘要:
DP 题,好像有点恶心,主要是因为能不能选空矩阵的问题。 有些数据好像是可以选空矩阵的有些又不能选,就很离谱,但是根据原数据来看空矩阵应该是不能选的,我也不知道具体情况() 注意到 \(m=1\) 的情况是经典问题,因此直接跳 \(m=2\)。 设 \(f_{i,j,k}\) 表示第一列做到前 \( 阅读全文
摘要:
这次的题目还是可以的,个人感觉比 CSP 要难一点(也可能是我的问题?),没有什么奇怪的题目(除了个 T4 暴力码量很大)。 8:20 ZJ 杭师大考点已经可以开始看题了,然后看了一眼这啥呀?数学专场? 开始看 T1,一开始不到 5 分钟打了个表发现大小为 15MB,然后又想了想发现我 nt 了,于 阅读全文
摘要:
一道思维题,但是可以手玩。 首先发现一个规律,那就是在我们输出的所有四元组 \((a_i,b_i,c_i,d_i)\) 中,对所有数除以 \(k\) 之后得到的四元组 \((\dfrac{a_i}{k}, \dfrac{b_i}{k}, \dfrac{c_i}{k}, \dfrac{d_i}{k}) 阅读全文
摘要:
一道 DP 题,好像有人叫这类题为数论 DP?但是不就是一个质数吗。 首先我们观察到如果这堆奶牛想要回到原位,那么对应的 \(a_i\) 一定会构成一个环。换言之,如果连边 \(i \to a_i\),那么就会出现若干个环。 而如果需要恰好 \(k\) 步回到原位,那么就需要所有环长的最小公倍数是 阅读全文
摘要:
一道很妙的 DP 题,一眼过去感觉这好像是个轮廓线 DP,然后这道题确实是轮廓线 DP 但不是 \(2^n\) 那种的。 本篇题解参照了其他题解的思路 (我从来没写过这种套路的题),在此表示感谢。 首先规定一下本文中的 \((i,j)\) 不是指第 \(i\) 行第 \(j\) 列,而是指网格线的第 阅读全文
摘要:
首先看这个范围又看到这种题目,就知道是状压 DP 跑不了了。 一个直接的思路是设 \(f_{i,s}\) 表示当前到第 \(i\) 轮,宝物拿取状态为 \(s\) 时的得分,但是我们发现这玩意直接推的话会出现一些奇奇怪怪的状态,主要是这个系统有时扔出来的宝物不能让你到达 \(s\) 或者是你推着推着 阅读全文
摘要:
一道比较不错的 DP。 设 \(f_i\) 表示当前字符串长为 \(i\) 时的最小代价,发现这道题麻烦的地方在于 \(f_i\) 可以从 \(f_{i+1}\) 的地方转移过来。 分类讨论一下: \(i\) 为偶数: \(i\) 为偶数时 \(f_i\) 能从 \(f_{i-1},f_{\frac 阅读全文
摘要:
T1 廊桥分配(airport) 这次 T1 带有很大的迷惑性。 其实吧本身这个 T1 不难,以国内区为例子,我们设 $s_{u}$ 表示当分配给国内区 $u$ 个廊桥的时候国内区有几架飞机能够停靠,不难发现如果规定 $s_{u}$ 表示有几架飞机刚好停在第 $u$ 个廊桥,就可以直接单点修改然后做 阅读全文
摘要:
哦首先感谢一下这场比赛的出题人,我们获得了极其友好的比赛体验 人在 ZJ,做傻掉了,你看这个 Plozia 怎么这么菜啊。 开场看题,首先看完题之后发现貌似没有大分类讨论题,好耶,然后开始愉快的写 T1。 本来看到 T1 我以为答案有单峰性然后准备三分的,后来发现不对劲貌似并不是单峰,而是答案都聚集 阅读全文
摘要:
1. 前言 谈可并堆之前,先谈谈堆。 本文所有堆都以小根堆为例。 众所周知堆是一个优秀的数据结构,能够做到 \(O(\log n)\) 查询最小值,插入一个数,弹出堆顶之类的,正常比赛中可以使用 priority_queue 实现。 但是如果现在有多个堆,要求支持合并两个堆,查询堆内最小值,弹出堆顶 阅读全文