摘要:
一道 LCT 好题。 一种简单的 \(O(n^2)\) 就是枚举区间然后并查集看一下有没有成环。 注意到一个性质:如果 \([l,r]\) 内边已经成环,那么 \([l,r'],r' \in [r,n]\) 内边肯定都已成环。 据此,考虑设置两个指针 \(l,r\),对于每一个 \(l\) 求出对于 阅读全文
摘要:
1. 前言 cdq 分治,是一种用于计算偏序问题的离线算法,常数较小,跑的肯定比 kdtree 要快。 如无特殊说明,默认下文的点不重合,数字都是正整数。 2. 详解 cdq 最经典的是解决三维偏序,四维偏序可以 cdq 套 cdq 但是五维以上偏序还是写 kdtree 得了。 一维偏序:一维坐标系 阅读全文
摘要:
Stop Updating. 阅读全文
摘要:
1. 前言 线段树分治,是一种数据结构,常用来离线维护一张图的连通性。 大致来讲,这张图的边会在一段时间内出现,别的时间消失,然后会有一些询问,线段树分治解决的就是这样的问题。 2. 详解 模板题:P5787 二分图 /【模板】线段树分治,下面假定 \(n,m\) 同阶。 首先考虑一个暴力做法:对于 阅读全文
摘要:
一道线段树分治套路好题。 将删边变为加边,考虑一条边能够加到哪些集合里面。注意,这里不能直接添加,也就是说对于边 \((x,y)\),如果其在集合 \(t\) 里面,不能直接插入到区间 \([1,t-1],[t+1,m]\) 中,这也是我的一个思维定式导致的误区。 正确的做法是应该都存下来,然后分段 阅读全文
摘要:
一道线段树合并的题。 下令 \(dep_u\) 是 \(u\) 的深度,\(dis_{x,y}\) 是 \(x \to y\) 的路径长度。 对于一组询问 \((u,k)\),我们要找出符合条件的 \((v,w)\) 满足 \(dis_{u,v} \le k\) 并且 \(u,v\) 都是 \(w\ 阅读全文
摘要:
一道排列组合题,还是我的排列组合太菜了…… 选必三重修警告 先说明一个东西:对于 \(n\) 个楼房,高度限制为 \(m\),那么高度不下降的方案数为 \(C_{n+m-1}^{m-1}\)。 理由:\(n\) 个楼房选高度,变成 \(n+m\) 个楼房选 \(m\) 个高度,并且每个高度必须有得选 阅读全文
摘要:
一道莫反好题。 先证个式子:\(E(X)=\sum_{i\ge 1}P(X \ge i)\),也就是最终长度为 \(X\) 的期望是所有最终长度小于等于 \(X\) 的概率之和。 证明:\(E(X)=\sum_{i\ge 1}iP(X=i)=\sum_{i\ge 1}\sum_{1\le j\le 阅读全文
摘要:
一道莫反套路题,其思路基本贯穿幽灵乐团。 下面钦定 \(n \le m\),这样做答案不变,规定所有除法都是整除(所以不要乱约分)。 \(\prod_{i=1}^{n}\prod_{j=1}^{m}f_{\gcd(i,j)}\) 枚举 \(\gcd(i,j)\),注意这一步之后 \([gcd(i,j 阅读全文
摘要:
一道不错的题目,只不过能被 hash 和维护若干次方和通过,本篇讲正解。 考虑一个乱序序列重排后是等差数列的一些条件(设区间 \([l,r]\),公差为 \(d\)): 数列最大值 - 数列最小值 = \((r-l)*d\)。 相邻两数的差的绝对值的最大公约数是 \(d\)。 序列中没有重复的数。 阅读全文
摘要:
OI 中的莫反与欧拉函数关系。 阅读全文
摘要:
OI 中的莫反 阅读全文
摘要:
1. 前言 整除分块,是一种数论的基础算法,必备知识,在很多题目中都有涉及但是题目很基础。 整除分块主要解决的是这样一类问题:求值: \(\sum_{i=1}^{n}f(i)g(\Big\lfloor\dfrac{k}{i}\Big\rfloor)\) 其中已知 \(f\) 的前缀和或者能 \(O( 阅读全文
摘要:
OI 中狄利克雷卷积。 阅读全文
摘要:
1. 前言 Prufer 序列,是一种用来描述树的序列,一般用于一些树上度数统计的题。 注意作者是 OIer,考虑到 Prufer 序列在 OI 里面的应用等,本篇文章只讲述 $O(n \log n)$ 的求法。 2. 详解 设有一棵 $n$ 点的树,则这个 $n$ 点的树和一个长度为 $n-2$ 阅读全文
摘要:
1. 前言 模拟退火,是一种随机化算法,OI 中经常用来骗分,我因为不知道这算啥所以把它放在杂项里面了(貌似标题有点奇怪)。 模拟退火这个算法是根据金属退火原理发明的。 2. 详解 首先我们知道一般的二分 / 三分是根据当前决策点是否最优决定往哪边走的,换句话说如果当前点不优那么我们就不选取这个点。 阅读全文
摘要:
一道线段树合并的题。 首先我们发现,如果我们交换了两棵子树,影响到的逆序对数量只会是这两棵子树交换之后数列改变的逆序对数量,对前面的数列和后面的数列并没有影响,对这两棵子树内部也没有影响,因为逆序对只关注相对位置及数的大小。 据此我们先建树,然后对于每个点整一棵值域线段树维护子树内的数,这个过程可以 阅读全文
摘要:
一些 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$ 分别表示只存在这个区间时的答案 阅读全文