摘要:
一道 LCT 好题。 一种简单的 \(O(n^2)\) 就是枚举区间然后并查集看一下有没有成环。 注意到一个性质:如果 \([l,r]\) 内边已经成环,那么 \([l,r'],r' \in [r,n]\) 内边肯定都已成环。 据此,考虑设置两个指针 \(l,r\),对于每一个 \(l\) 求出对于 阅读全文
posted @ 2022-04-17 21:54
Plozia
阅读(53)
评论(0)
推荐(0)
摘要:
1. 前言 cdq 分治,是一种用于计算偏序问题的离线算法,常数较小,跑的肯定比 kdtree 要快。 如无特殊说明,默认下文的点不重合,数字都是正整数。 2. 详解 cdq 最经典的是解决三维偏序,四维偏序可以 cdq 套 cdq 但是五维以上偏序还是写 kdtree 得了。 一维偏序:一维坐标系 阅读全文
posted @ 2022-04-17 20:04
Plozia
阅读(219)
评论(0)
推荐(0)
摘要:
Stop Updating. 阅读全文
posted @ 2022-04-17 19:04
Plozia
阅读(682)
评论(0)
推荐(6)
摘要:
1. 前言 线段树分治,是一种数据结构,常用来离线维护一张图的连通性。 大致来讲,这张图的边会在一段时间内出现,别的时间消失,然后会有一些询问,线段树分治解决的就是这样的问题。 2. 详解 模板题:P5787 二分图 /【模板】线段树分治,下面假定 \(n,m\) 同阶。 首先考虑一个暴力做法:对于 阅读全文
posted @ 2022-04-17 19:03
Plozia
阅读(124)
评论(0)
推荐(0)
摘要:
一道线段树分治套路好题。 将删边变为加边,考虑一条边能够加到哪些集合里面。注意,这里不能直接添加,也就是说对于边 \((x,y)\),如果其在集合 \(t\) 里面,不能直接插入到区间 \([1,t-1],[t+1,m]\) 中,这也是我的一个思维定式导致的误区。 正确的做法是应该都存下来,然后分段 阅读全文
posted @ 2022-04-17 19:03
Plozia
阅读(55)
评论(0)
推荐(0)
摘要:
一道线段树合并的题。 下令 \(dep_u\) 是 \(u\) 的深度,\(dis_{x,y}\) 是 \(x \to y\) 的路径长度。 对于一组询问 \((u,k)\),我们要找出符合条件的 \((v,w)\) 满足 \(dis_{u,v} \le k\) 并且 \(u,v\) 都是 \(w\ 阅读全文
posted @ 2022-04-17 19:02
Plozia
阅读(80)
评论(0)
推荐(0)
摘要:
一道排列组合题,还是我的排列组合太菜了…… 选必三重修警告 先说明一个东西:对于 \(n\) 个楼房,高度限制为 \(m\),那么高度不下降的方案数为 \(C_{n+m-1}^{m-1}\)。 理由:\(n\) 个楼房选高度,变成 \(n+m\) 个楼房选 \(m\) 个高度,并且每个高度必须有得选 阅读全文
posted @ 2022-04-17 19:02
Plozia
阅读(58)
评论(0)
推荐(0)
摘要:
一道莫反套路题,其思路基本贯穿幽灵乐团。 下面钦定 \(n \le m\),这样做答案不变,规定所有除法都是整除(所以不要乱约分)。 \(\prod_{i=1}^{n}\prod_{j=1}^{m}f_{\gcd(i,j)}\) 枚举 \(\gcd(i,j)\),注意这一步之后 \([gcd(i,j 阅读全文
posted @ 2022-04-17 19:01
Plozia
阅读(64)
评论(0)
推荐(0)
摘要:
一道莫反好题。 先证个式子:\(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 阅读全文
posted @ 2022-04-17 19:01
Plozia
阅读(67)
评论(0)
推荐(0)
摘要:
一道不错的题目,只不过能被 hash 和维护若干次方和通过,本篇讲正解。 考虑一个乱序序列重排后是等差数列的一些条件(设区间 \([l,r]\),公差为 \(d\)): 数列最大值 - 数列最小值 = \((r-l)*d\)。 相邻两数的差的绝对值的最大公约数是 \(d\)。 序列中没有重复的数。 阅读全文
posted @ 2022-04-17 18:59
Plozia
阅读(110)
评论(0)
推荐(0)
摘要:
OI 中的莫反与欧拉函数关系。 阅读全文
posted @ 2022-04-17 18:58
Plozia
阅读(482)
评论(0)
推荐(0)
摘要:
OI 中的莫反 阅读全文
posted @ 2022-04-17 18:56
Plozia
阅读(205)
评论(0)
推荐(1)
摘要:
1. 前言 整除分块,是一种数论的基础算法,必备知识,在很多题目中都有涉及但是题目很基础。 整除分块主要解决的是这样一类问题:求值: \(\sum_{i=1}^{n}f(i)g(\Big\lfloor\dfrac{k}{i}\Big\rfloor)\) 其中已知 \(f\) 的前缀和或者能 \(O( 阅读全文
posted @ 2022-04-17 18:53
Plozia
阅读(163)
评论(0)
推荐(0)
摘要:
OI 中狄利克雷卷积。 阅读全文
posted @ 2022-04-17 18:53
Plozia
阅读(2403)
评论(0)
推荐(3)
摘要:
1. 前言 Prufer 序列,是一种用来描述树的序列,一般用于一些树上度数统计的题。 注意作者是 OIer,考虑到 Prufer 序列在 OI 里面的应用等,本篇文章只讲述 $O(n \log n)$ 的求法。 2. 详解 设有一棵 $n$ 点的树,则这个 $n$ 点的树和一个长度为 $n-2$ 阅读全文
posted @ 2022-04-17 18:52
Plozia
阅读(343)
评论(0)
推荐(1)
摘要:
1. 前言 模拟退火,是一种随机化算法,OI 中经常用来骗分,我因为不知道这算啥所以把它放在杂项里面了(貌似标题有点奇怪)。 模拟退火这个算法是根据金属退火原理发明的。 2. 详解 首先我们知道一般的二分 / 三分是根据当前决策点是否最优决定往哪边走的,换句话说如果当前点不优那么我们就不选取这个点。 阅读全文
posted @ 2022-04-17 18:51
Plozia
阅读(161)
评论(0)
推荐(0)
摘要:
一道线段树合并的题。 首先我们发现,如果我们交换了两棵子树,影响到的逆序对数量只会是这两棵子树交换之后数列改变的逆序对数量,对前面的数列和后面的数列并没有影响,对这两棵子树内部也没有影响,因为逆序对只关注相对位置及数的大小。 据此我们先建树,然后对于每个点整一棵值域线段树维护子树内的数,这个过程可以 阅读全文
posted @ 2022-04-17 18:51
Plozia
阅读(78)
评论(0)
推荐(0)
摘要:
一些 Update Update 2022/1/25:修正了 Delete 的代码。 1. 前言 本篇博文是作者学习 K - D Tree 时候的学习笔记。 K - D Tree,是一种实战运用中比较不错的数据结构,通常用来骗分或者是部分题的正解,然而复杂度玄学并且常数大。 那为啥还要学 K - D 阅读全文
posted @ 2022-04-17 18:50
Plozia
阅读(384)
评论(0)
推荐(2)
摘要:
1. 前言 本篇博文是博主学习李超线段树的学习笔记。 2020/12/21 的时候我在 数据结构专题-学习笔记:线段树 中说要写 5 篇线段树博客,第 5 篇是李超线段树,结果鸽子到现在才写( ~~众所周知这篇博文是线段树算法总结&专题训练5~~ 李超线段树也是一种线段树,但是这个线段树主要做的是这 阅读全文
posted @ 2022-04-17 18:48
Plozia
阅读(194)
评论(0)
推荐(1)
摘要:
一道线段树题目,思路很巧妙。 首先先转化一下题意,发现如果后面的楼房能够被前面的挡住,一定是后面楼房的斜率比前面楼房小,斜率就是 $\dfrac{H_i}{i}$,于是这道题变成了单点修改,全局查询哪几个点斜率是前缀最大值中的最大值。 维护两个值 $ans,Maxn$ 分别表示只存在这个区间时的答案 阅读全文
posted @ 2022-04-17 18:47
Plozia
阅读(106)
评论(0)
推荐(0)
摘要:
一道奆数据结构题,需要有较高的码力和基础的数据结构。 一看过去就会发现这是道数据结构题,然后这道题实际上就是平衡树的板子题只是有各种奇怪的操作而已。我用的是 FHQ Treap。 其实吧这道题本来我不打算写题解的,毕竟还是比较显然的数据结构题,但是这道题的众多坑点让我还是决定写篇题解,本篇题解采用拆 阅读全文
posted @ 2022-04-17 18:46
Plozia
阅读(70)
评论(0)
推荐(0)
摘要:
一些 Update Update 2021/12/16:修改垃圾回收部分的描述,改为更一般的描述空间回收并且加了一些解释说明。 1. 前言 线段树合并,是一种听起来高大上实际上难度并不大的算法,专门用于一些 DS 题目,可以在一定的复杂度内合并两棵线段树,这过程中有时会用启发式合并。 当然,如果你学 阅读全文
posted @ 2022-04-17 18:45
Plozia
阅读(2558)
评论(1)
推荐(3)
摘要:
一道虚树题,但是做完之后发现跟虚树半点关系没有,反而更像思维题。 首先默认读者会虚树,然后会发现这道题有一个朴素做法就是对于每一次操作完之后的点我们都建一棵虚树,然后这个虚树上面的 DP 是简单的。 然后这个复杂度最坏是 \(O(nm)\) 的,显然会炸,于是我们要想想办法。 发现实际上我们没有必要 阅读全文
posted @ 2022-04-17 18:45
Plozia
阅读(62)
评论(0)
推荐(0)
摘要:
1. 前言 虚树,主要是用于一类树上问题,这类问题通常是需要取一些关键点,然后要在这些关键点和其 LCA 上做一些奇怪的玩意。 关键前置知识:LCA。 2. 详解 2.1 虚树定义 首先我们需要知道虚树是什么: 现在给出一棵 \(n\) 个点的树,从中选取出 \(k\) 个关键点,这些关键点以及其两 阅读全文
posted @ 2022-04-17 18:44
Plozia
阅读(413)
评论(0)
推荐(0)
摘要:
一道分块题,应该是 Ynoi 题里面为数不多的不卡常题(?),反正我没卡就过了,这道题 Idea 不错。 前置知识:根号做法的弹飞绵羊,下面认为读者已经会了这个做法。 首先类似于弹飞绵羊,我们设一个 \(Top_i\) 表示当前这个点不断往前跳,跳到这个块的最前面的位置(当然也可以跳出块外第一个位置 阅读全文
posted @ 2022-04-17 18:42
Plozia
阅读(44)
评论(0)
推荐(0)
摘要:
看到 Ynoi 题,就要想到根号算法 + 卡常。这什么毒瘤卡常题() 显然对序列分块,这样可以维护查询,但是怎么修改呢? 考虑到修改操作的步长为 \(x\),那么设一个阈值 \(p\),对于 \(x \geq p\) 暴力跳暴力修改,对于 \(x < p\) 另外想办法,实际上就是一个根号分治思想。 阅读全文
posted @ 2022-04-17 18:41
Plozia
阅读(59)
评论(0)
推荐(0)
摘要:
DP 题,好像有点恶心,主要是因为能不能选空矩阵的问题。 有些数据好像是可以选空矩阵的有些又不能选,就很离谱,但是根据原数据来看空矩阵应该是不能选的,我也不知道具体情况() 注意到 \(m=1\) 的情况是经典问题,因此直接跳 \(m=2\)。 设 \(f_{i,j,k}\) 表示第一列做到前 \( 阅读全文
posted @ 2022-04-17 18:40
Plozia
阅读(34)
评论(0)
推荐(0)
摘要:
这次的题目还是可以的,个人感觉比 CSP 要难一点(也可能是我的问题?),没有什么奇怪的题目(除了个 T4 暴力码量很大)。 8:20 ZJ 杭师大考点已经可以开始看题了,然后看了一眼这啥呀?数学专场? 开始看 T1,一开始不到 5 分钟打了个表发现大小为 15MB,然后又想了想发现我 nt 了,于 阅读全文
posted @ 2022-04-17 18:39
Plozia
阅读(67)
评论(0)
推荐(0)
摘要:
一道思维题,但是可以手玩。 首先发现一个规律,那就是在我们输出的所有四元组 \((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}) 阅读全文
posted @ 2022-04-17 18:38
Plozia
阅读(53)
评论(0)
推荐(0)
摘要:
一道 DP 题,好像有人叫这类题为数论 DP?但是不就是一个质数吗。 首先我们观察到如果这堆奶牛想要回到原位,那么对应的 \(a_i\) 一定会构成一个环。换言之,如果连边 \(i \to a_i\),那么就会出现若干个环。 而如果需要恰好 \(k\) 步回到原位,那么就需要所有环长的最小公倍数是 阅读全文
posted @ 2022-04-17 18:37
Plozia
阅读(43)
评论(0)
推荐(0)
摘要:
一道很妙的 DP 题,一眼过去感觉这好像是个轮廓线 DP,然后这道题确实是轮廓线 DP 但不是 \(2^n\) 那种的。 本篇题解参照了其他题解的思路 (我从来没写过这种套路的题),在此表示感谢。 首先规定一下本文中的 \((i,j)\) 不是指第 \(i\) 行第 \(j\) 列,而是指网格线的第 阅读全文
posted @ 2022-04-17 18:36
Plozia
阅读(39)
评论(0)
推荐(0)
摘要:
首先看这个范围又看到这种题目,就知道是状压 DP 跑不了了。 一个直接的思路是设 \(f_{i,s}\) 表示当前到第 \(i\) 轮,宝物拿取状态为 \(s\) 时的得分,但是我们发现这玩意直接推的话会出现一些奇奇怪怪的状态,主要是这个系统有时扔出来的宝物不能让你到达 \(s\) 或者是你推着推着 阅读全文
posted @ 2022-04-17 18:35
Plozia
阅读(51)
评论(0)
推荐(0)
摘要:
一道比较不错的 DP。 设 \(f_i\) 表示当前字符串长为 \(i\) 时的最小代价,发现这道题麻烦的地方在于 \(f_i\) 可以从 \(f_{i+1}\) 的地方转移过来。 分类讨论一下: \(i\) 为偶数: \(i\) 为偶数时 \(f_i\) 能从 \(f_{i-1},f_{\frac 阅读全文
posted @ 2022-04-17 18:33
Plozia
阅读(57)
评论(0)
推荐(0)
摘要:
T1 廊桥分配(airport) 这次 T1 带有很大的迷惑性。 其实吧本身这个 T1 不难,以国内区为例子,我们设 $s_{u}$ 表示当分配给国内区 $u$ 个廊桥的时候国内区有几架飞机能够停靠,不难发现如果规定 $s_{u}$ 表示有几架飞机刚好停在第 $u$ 个廊桥,就可以直接单点修改然后做 阅读全文
posted @ 2022-04-17 18:32
Plozia
阅读(235)
评论(0)
推荐(1)
摘要:
哦首先感谢一下这场比赛的出题人,我们获得了极其友好的比赛体验 人在 ZJ,做傻掉了,你看这个 Plozia 怎么这么菜啊。 开场看题,首先看完题之后发现貌似没有大分类讨论题,好耶,然后开始愉快的写 T1。 本来看到 T1 我以为答案有单峰性然后准备三分的,后来发现不对劲貌似并不是单峰,而是答案都聚集 阅读全文
posted @ 2022-04-17 18:31
Plozia
阅读(73)
评论(0)
推荐(0)
摘要:
1. 前言 谈可并堆之前,先谈谈堆。 本文所有堆都以小根堆为例。 众所周知堆是一个优秀的数据结构,能够做到 \(O(\log n)\) 查询最小值,插入一个数,弹出堆顶之类的,正常比赛中可以使用 priority_queue 实现。 但是如果现在有多个堆,要求支持合并两个堆,查询堆内最小值,弹出堆顶 阅读全文
posted @ 2022-04-17 18:29
Plozia
阅读(173)
评论(0)
推荐(0)
摘要:
一道套路题,做过同类型的题目应该能够直接看出做法。 这道题首先询问方式很像 DS 题的询问方式,但是实际上你会发现这道题做法是不能纯 DS 的,或者说这道题根本就不需要 DS。 发现如果乘积和 LCM 要相同的话需要满足这个区间内没有任意两个数最大公约数大于 1,而最大公约数可以归约到质因数上。 所 阅读全文
posted @ 2022-04-17 18:28
Plozia
阅读(60)
评论(0)
推荐(0)
摘要:
1. 前言 树上差分,是一种难度不高,思维量也不大的算法,应用范围比较窄但是快。 前置知识:差分,树上最近公共祖先(LCA)。 2. 详解 2.1 点上差分 先来看这么一个例题: 给出一棵 \(n\) 个点的树,每个点点权初始为 0,现在有 \(m\) 次修改,每次修改给出 \(x,y\),将 \( 阅读全文
posted @ 2022-04-17 18:27
Plozia
阅读(580)
评论(0)
推荐(0)
摘要:
一道思维题。 首先我们可以发现实际上我们如果能够在 \(a \to b \to c\) 上的路径上将总和排的尽量小那么一定是最优的。 于是我们可以考虑求出 \(a \to b\) 的最短路以及 \(b \to c\) 的最短路然后其和的结果就是总的最短路,将小的丢到这些路径上面就好了 ……吗? 实际 阅读全文
posted @ 2022-04-17 18:26
Plozia
阅读(35)
评论(0)
推荐(0)
摘要:
一道思维题。 首先我们需要转化一下题意。 对于两个相邻的区间 \([l_i,r_i],[l_{i+1},r_{i+1}]\),我们将这两个区间合并一下,得到能够连接这两个区间的线段长度:\([l_{i+1}-r_i,r_{i+1}-l_i]\)。 这样,问题就变成了有若干个固定位置的点,用这些点去覆 阅读全文
posted @ 2022-04-17 18:12
Plozia
阅读(41)
评论(0)
推荐(0)
摘要:
一道思维题。 看题,发现输出 Yes 或者 No,就知道要判无解,因此首先来讨论无解的情况: 如果当前总牌数 \(s\) 为奇数,无解。 这是因为交换时有两张卡牌发生了变动,为偶数,且每张牌只能交换一次,因此如果总牌数是奇数无论如何都会有一张无法交换。 交换的任意时刻,自己牌数最大者大于当前可以交换 阅读全文
posted @ 2022-04-17 18:12
Plozia
阅读(46)
评论(0)
推荐(0)
摘要:
一道套路题。 考虑将所有的横线分个类,左端点在边界上的为 1 类(L 类),右端点在边界上的为 1 类(R 类),左右都在边界上的随意分,然后将所有的竖线按照其 \(x\) 升序排序。 开两个值域线段树(能支持单点修改区间查询即可),一棵维护 L 类,一棵维护 R 类。 理论上一棵也可行,但是两棵理 阅读全文
posted @ 2022-04-17 18:11
Plozia
阅读(32)
评论(0)
推荐(0)
摘要:
一些 update update 2021/11/12:修正了文章中的一些语言。 1. 前言 本篇文章将会对 2 - SAT 问题做一个讲解。 前置知识:强连通分量/缩点。 2. 详解 首先我们需要知道 2 - SAT 是什么。 实际上 2 - SAT 是 k - SAT 的一种特殊情况。 k - 阅读全文
posted @ 2022-04-17 18:11
Plozia
阅读(270)
评论(0)
推荐(0)
摘要:
本题有两种算法,一种是 \(O(n \log^2 n)\) 树套树/cdq 分治算法,一种是 \(O(n\sqrt{n})\) 莫队与值域分块算法,这里只讲根号算法。 这道题就是一个树上数颜色问题,只是颜色被限定在一个区间。 如果你做过 P4396 [AHOI2013]作业,我相信你能一眼看出这道题 阅读全文
posted @ 2022-04-17 18:10
Plozia
阅读(55)
评论(0)
推荐(0)
摘要:
首先看到这道题,每个软件有体积有价值,加上其有依赖关系,就能够想到这是道树上背包问题。 树上背包问题的方程就不再赘述了,不会的读者可以自行百度,这类经典问题网上讲解的还是挺多的。 如果软件 \(x\) 依赖 \(y\),那么就连边 \(y \to x\)。 然后你高高兴兴的打出了树上背包问题的代码, 阅读全文
posted @ 2022-04-17 18:08
Plozia
阅读(45)
评论(0)
推荐(0)
摘要:
0. 一些 update update on 2021/7/17:增添了 P4151 [WC2011]最大XOR和路径 的一些说明。 1. 前言 本篇博文是作者学习线性基时候的一些专项训练,难度比数学/数论专题-专项训练:线性基#1稍微大了一点。 因为作者是个 OIer,本文只讨论 OI 中常见的线 阅读全文
posted @ 2022-04-17 18:07
Plozia
阅读(56)
评论(0)
推荐(0)
摘要:
首先看到题目的时候,看见异或最小值,就需要想到可能是线性基,而这题正需要线性基。 对于 \(1 \to n\) 的路径而言,我们可以将这条路径拆成 2 部分:一条链 + 一些环。 相当于我们要求链的路径长度异或上所有环长度的最小值。 先看所有环长度的异或最小值,我们可以先用一遍 DFS 预处理出所有 阅读全文
posted @ 2022-04-17 18:05
Plozia
阅读(61)
评论(0)
推荐(0)
摘要:
一道莫队好题。 我们需要考虑的是如何去统计一个区间内的符合题意的答案。 这里有两种做法: 做法一:树状数组/线段树。 我们可以开一个值域树状数组/值域线段树,在每一次莫队增/删的时候我们在对应位置进行单点修改操作,维护一下一个区间内的数的个数以及不同数的个数。 最后统计答案的时候,进行一次区间查找操 阅读全文
posted @ 2022-04-17 18:02
Plozia
阅读(53)
评论(0)
推荐(0)
摘要:
1. 前言 本篇博文是作者学习线性基的专项训练。 数学/数论专题-学习笔记:线性基 本文默认你已经学会了线性基及其性质,及其简单应用。 2. 练习题 题单: P4570 [BJWC2011]元素 P3857 [TJOI2008]彩灯 P3292 [SCOI2016]幸运数字 P4570 [BJWC2 阅读全文
posted @ 2022-04-17 18:01
Plozia
阅读(66)
评论(0)
推荐(0)
摘要:
这道题的解法是倍增 LCA + 线性基。 下面假设你已经学会了倍增 LCA 和线性基。 首先回顾倍增 LCA 的过程:通过倍增合并 \(f_{i,j}\) 到 \(f_{i,j+1}\) 上。 实际上线性基也是可以合并的,合并方式就是将一个线性基插入到另外一个线性基里面。 因此既然线性基可以合并,那 阅读全文
posted @ 2022-04-17 18:00
Plozia
阅读(75)
评论(0)
推荐(0)
摘要:
本题做法:树链剖分 + 线性基。 下面默认读者学会了树链剖分与线性基。 首先对于 Query 操作,我们需要转化一下题意:对于路径上的点而言,是否能够选出一些点,使得这些点点权异或值为 0。 这么做的理由是因为如果不存在这样的点集,那么就不会出现两个不相同的集合其异或值相同。 看到异或值询问是否有 阅读全文
posted @ 2022-04-17 18:00
Plozia
阅读(68)
评论(0)
推荐(0)
摘要:
这道题的解法:贪心+线性基。 由于线性基有一个优秀的性质:无论一个序列的线性基怎么变,其线性基内数的个数都是相同的,关键是看你怎么排列数的顺序,那么我们可以贪心。 考虑将所有石头按照魔力值从大到小排序,然后直接做线性基,能插入的数就加上其魔力值。 对于正确性证明:如果你对于线性基上面这个性质学过证明 阅读全文
posted @ 2022-04-17 17:58
Plozia
阅读(30)
评论(0)
推荐(0)
摘要:
这道题首先我们可以将题中的控制开关状态转变成一个二进制数。 然后实际上题中所说的按下开关就是异或。 那么因此这道题要求方案数,实质上就是要求原序列能够构成的线性基中数的多少。 由于线性基有一个很优秀的性质:原数列与线性基能异或出来的数是相同的,因此实际上我们知道了线性基内有 \(cnt\) 个数,那 阅读全文
posted @ 2022-04-17 17:57
Plozia
阅读(18)
评论(0)
推荐(0)
摘要:
设询问 \((l,r,z)\) 表示 \(\sum_{i=1}^{r}dep[LCA(i,z)]\)。 首先先对询问式做一个差分: \((l,r,z)=(1,r,z)-(1,l-1,z)\) 那么我们可以考虑将一个询问 \((l,r,z)\) 拆成两个询问 \((1,r,z)\) 和 \((1,l- 阅读全文
posted @ 2022-04-17 17:56
Plozia
阅读(47)
评论(0)
推荐(0)
摘要:
1. 前言 线性基,是线性代数中的一个板块,专门处理异或问题。 注意作者是个 OIer,因此并不会涉及(或者是极少的)线性代数知识。 注意本文所讲线性基跟向量无关。 前置知识:二进制,位运算。 2. 详解 2.1 定义与性质 线性基的定义如下: 给出一个数列 \(a_1,a_2,...,a_n\), 阅读全文
posted @ 2022-04-17 17:56
Plozia
阅读(310)
评论(0)
推荐(0)
摘要:
一道思维题。 首先题目上有 \(1 \leq b_{i,j} \leq 16\),而要求 \(b_{i,j} \mid a_{i,j}\),因此我们可以求一下 \([1,16]\) 内所有整数的 \(\operatorname{lcm}\): \(\operatorname{lcm}(1,2,... 阅读全文
posted @ 2022-04-17 17:54
Plozia
阅读(28)
评论(0)
推荐(0)
摘要:
这是一道思维题。 本文约定:\(u \to v\) 表示从 \(u\) 到 \(v\) 的路径。 首先简化一下题意:给出一棵树,求出三个点使得三个点之间两两路径并的长度最大。 显然我们不能枚举这三个点,复杂度 \(O(n^3)\) 过大,不能接受。 做这道题需要一个重要结论:树的直径的两个端点一定是 阅读全文
posted @ 2022-04-17 17:54
Plozia
阅读(37)
评论(0)
推荐(0)
摘要:
1. 前言 本篇博文是作者在学习点分治这一算法的时候做的一些题目的总结。 前置知识:点分治算法。 图论专题-学习笔记:点分治 2. 练习题 题单: P4178 Tree P2634 [国家集训队]聪聪可可 P4149 [IOI2011]Race P4178 Tree 考虑点分治。 这道题需要求的是路 阅读全文
posted @ 2022-04-17 17:53
Plozia
阅读(36)
评论(0)
推荐(0)
摘要:
1. 前言 点分治,是一种图论算法,专门用于一类树上路径统计问题。 前置知识:无。 2. 详解 2.1 树的重心 讲点分治之前我们先来讲讲树的重心。 树的重心的定义是这样的:在一棵树中,如果以一个点为根,其所有儿子的子树大小最大值是最小的,那么这个点就是树的重心。 换言之,树的重心需要满足其子树的最 阅读全文
posted @ 2022-04-17 17:52
Plozia
阅读(64)
评论(0)
推荐(0)
摘要:
1. 前言 本篇文章是作者学习乘法逆元的时候的一些学习笔记。 前置知识:同余式,一些简单的数论符号。 2. 详解 2.1 定义+作用 乘法逆元的定义如下:对于任意 $a \in N_+$,若存在 $a \in N_+$ 使得 $ax \equiv 1 \pmod p$,则称 $a$ 是 $x$ 在模 阅读全文
posted @ 2022-04-17 17:51
Plozia
阅读(260)
评论(0)
推荐(0)
摘要:
一道神仙题,很考验各位对于期望 DP 的掌握程度与数据结构优化 DP 的熟练度。 ~~本题好像有线段树套矩阵优化 DP 做法?不管了不管了,反正我没写~~ 实际上一开始想的时候我迅速发现这道题与以前做过的一道题目很相似,感觉可以线段树套矩阵做,但是想了一个晚上没想出解法。 后来看题解,发现确实有这样 阅读全文
posted @ 2022-04-17 17:49
Plozia
阅读(58)
评论(0)
推荐(0)
摘要:
1. 前言 本篇文章是作者学习矩阵的时候的一些相关训练。 注意作者是个 OIer,因此并不会涉及到线性代数知识(或者说是很少)。 前置知识:矩阵快速幂 2. 题单 题单: P5343 【XR-1】分块 P5789 [TJOI2017]可乐(数据加强版) P5337 [TJOI2019]甲苯先生的字符 阅读全文
posted @ 2022-04-17 17:48
Plozia
阅读(97)
评论(0)
推荐(0)
摘要:
1. 前言 本篇文章是作者学习矩阵时候的一些笔记。 注意作者是个 OIer,因此并不会涉及到专业的线性代数知识(或者说是极少)。 前置知识:矩阵定义+矩阵乘法,正整数快速幂。 2. 矩阵快速幂 我们知道复数(或者简单点,实数)中有幂的定义: 对于 \(a \in C\),将 \(a \times a 阅读全文
posted @ 2022-04-17 16:21
Plozia
阅读(144)
评论(0)
推荐(0)
摘要:
1. 前言 本篇文章是作者学习矩阵时候的一些个人笔记。 由于作者是个高中 OIer,因此并不会涉及到有关线性代数的很多知识,只记录与 OI 有关的矩阵。 这边建议学线性代数的人看一下这篇博文,讲的非常好:理解矩阵(一)(Author:孟岩)。 2. 定义 2.1 向量 讲矩阵之前我们先来讲讲向量。 阅读全文
posted @ 2022-04-17 16:20
Plozia
阅读(209)
评论(0)
推荐(0)
摘要:
这道题是一道思维题。 定义『段』如下: 段:一个段是原序列的连续子序列,其中 \([1,k]\) 内的所有正整数都出现过。 据此,我们可以对原序列分段,分的尽量多。 比如样例: 1 5 3 2 5 1 3 4 4 2 5 1 2 3 可以将其分成下面两段: [1 5 3 2 5 1 3 4][4 2 阅读全文
posted @ 2022-04-17 16:18
Plozia
阅读(49)
评论(0)
推荐(0)
摘要:
1. 前言 本文是作者写的第 3 篇状压 DP 的博文,专门用来总结、复习状压 DP 这一动态规划的相关内容。 2. 题单 题单: P2396 yyy loves Maths VII P2150 [NOI2015] 寿司晚宴 P2396 yyy loves Maths VII 看到这个 \(n \l 阅读全文
posted @ 2022-04-17 16:17
Plozia
阅读(80)
评论(0)
推荐(0)
摘要:
这道题是一道好题目,考察了建模能力。 但是因为数据过水导致建模建错都能有 80 分 首先我们需要了解一个概念:最大权闭合子图。 什么是最大权闭合子图? 对于一张有向图 \(G=<V,E>\),我们从中选出一些点,如果这些点满足以下条件,就称这些点组成的图为闭合子图: 对于每一个被选出来的点,其在图 阅读全文
posted @ 2022-04-17 16:16
Plozia
阅读(112)
评论(0)
推荐(0)
摘要:
1. 前言 本篇文章是作者写的第 3 篇树形 DP 博文,对树形 DP 这一算法做一个复习与总结,同时进行盲点扫荡。 2. 题单 题单: 普通树形 DP: P4395 [BOI2003]Gem 气垫车 背包类树形 DP: P3698 [CQOI2017]小Q的棋盘 P3177 [HAOI2015]树 阅读全文
posted @ 2022-04-17 16:15
Plozia
阅读(111)
评论(0)
推荐(0)
摘要:
1. 前言 欧拉定理与扩展欧拉定理,是数论中的一个很重要的定理。 该定理可以将形如 \(a^b\) 的式子的指数降得很低,通常可以降到 \(\log b\) 可接受范围内,这样就可以用快速幂计算了。 若无特殊说明,本文所有数都是正整数。 一些符号说明: \(\varphi(n)\) 为欧拉函数。 \ 阅读全文
posted @ 2022-04-17 15:53
Plozia
阅读(556)
评论(1)
推荐(0)
摘要:
一道神仙图论题,很考验各位对最短路以及染色问题的理解。 首先说明 1 点,实质上神秘问题就是经典的染色问题。 这里首先简要分析一下给出的几个代码的特色: FloydWarshall:稳定的 $O(V^3)$ 运行。下称 Floyd。 OptimizedBellmanFord:加了优化的 Bellma 阅读全文
posted @ 2022-04-17 15:50
Plozia
阅读(56)
评论(0)
推荐(0)
摘要:
这道题是一道很好的二位前缀和问题。 然而码量有点大。 下面规定 \(n\) 表示行,\(m\) 表示列,\(n,m\) 同阶。 即计算复杂度的时候视 \(O(nm)\) 为 \(O(n^2)\)。 首先预处理 \(sum_{i,j}\) 表示从 \((1,1)\) 到 \((i,j)\) 的和,也就 阅读全文
posted @ 2022-04-17 15:48
Plozia
阅读(116)
评论(0)
推荐(0)
摘要:
1. 前言 Manacher 算法,俗称“马拉车”算法,是一种字符串算法,该算法可以在线性时间内求出一个串中最长回文串的长度,以及以每一个点为回文中心的奇长度回文串的长度。 实际上偶长度回文串的长度也能够求,后面会讲。 前置知识:无。 2. 详解 例题:P3805 【模板】manacher算法 2. 阅读全文
posted @ 2022-04-17 15:33
Plozia
阅读(75)
评论(0)
推荐(0)
摘要:
update:发现之前桥的 std 写错了,现已更正。 1. 前言 割点与桥,是图论的一个分支,常使用 Tarjan 算法实现。 ~~没错又是这个算法~~ 注意割点与桥中的 Tarjan 算法与强连通分量中的 Tarjan 算法在具体实现上有所不同。 前置知识: dfs 树 / dfs 序 2. 割 阅读全文
posted @ 2022-04-17 15:32
Plozia
阅读(830)
评论(0)
推荐(0)
摘要:
1. 前言 数据结构优化 DP,是利用各种数据结构来优化 DP 的时空复杂度的一种方法。 前置知识:普通 DP+常见数据结构(比如线段树等) 注意本篇博文将不会对暴力 DP 方程如何建立进行讲解。 2. 例题 例题:P4644 [USACO05DEC]Cleaning Shifts S 数据结构优化 阅读全文
posted @ 2022-04-17 15:24
Plozia
阅读(298)
评论(0)
推荐(0)
摘要:
一些 Update Update 2021/11/16:发现之前推的结论有严重错误,现已更正,如果有读者被误导,在此深表歉意。 1. 前言 差分约束是一种最短路算法,专门用来解决下面这类问题: 已知 $n$ 个正整数 $x_1,x_2,...,x_n$,与 $m$ 个形如 $x_i-x_j \leq 阅读全文
posted @ 2022-04-17 15:22
Plozia
阅读(84)
评论(0)
推荐(0)
摘要:
最小生成树好题。 下面规定鹅卵石路长度为 1,水泥路长度为 0,则题中要求的是一棵边权为 \(k\) 的生成树。 这道题一开始的时候我会认为边权为 1 的边可以随便加,毕竟根据样例来看,删这一条换另一条并没有什么问题。 于是就有一种做法是先选好 \(k\) 条 1 边,然后剩下的 0 边随意加。 然 阅读全文
posted @ 2022-04-17 15:20
Plozia
阅读(47)
评论(0)
推荐(0)
摘要:
1. 前言 树的直径是树的一个小板块,但是有着重要的应用。 前置知识:树的基础知识。 2. 详解 例题:SP1437 PT07Z - Longest path in a tree 2.1 定义 树的直径:一棵树上最长的路径叫做树的直径。 比如下面这棵树,带有边权 1 的路径就是树的直径。 需要注意的 阅读全文
posted @ 2022-04-17 15:20
Plozia
阅读(675)
评论(0)
推荐(0)
摘要:
1. 前言 次短路与次小生成树,是由最短路与最小生成树扩展而来的算法。 在往下看之前,请先确保你了解最短路与最小生成树。 没有学过建议左转洛谷模板,右转百度搜索。 难道泥萌没有发现上面两个字对应的模板是不一样的吗qwq 2. 次短路 本文采用 dijkstra 求最短路。 例题:P2865 [USA 阅读全文
posted @ 2022-04-17 15:11
Plozia
阅读(279)
评论(0)
推荐(0)
摘要:
一些 update update on 2021/8/12:增加了对于 Kosaraju 算法优势的分析。 1. 前言 强连通分量,是图论的一个东西。 这个东西可以将有向图变为一张 DAG,而在 DAG 上就可以使用各种技巧了。 2. 定义 分量的定义:在一张给定的有向图中,如果点 \(a,b\) 阅读全文
posted @ 2022-04-17 15:09
Plozia
阅读(323)
评论(0)
推荐(0)
摘要:
一些 update update 2021/4/19:最近在洛谷讨论区的学术版里面看到一篇帖子,是关于斜率相同时是否需要弹出队列的问题,笔者在看完这篇帖子之后,发现这个细节是很重要的,故加上。 update 2022/1/8:修改了一个地方的语言,不影响本篇文章的理解,但是对于一些斜率优化的题目还是 阅读全文
posted @ 2022-04-17 15:06
Plozia
阅读(181)
评论(0)
推荐(0)
摘要:
1. 前言 扩展欧几里得(exgcd),是在欧几里得算法基础上求解任意形如 $ax+by=c$ 的二元一次方程的一组特解的一种算法。 在往下看之前,您只需要知道如何使用欧几里得算法求 $\gcd(a,b)$。 不知道也没关系,式子在这里: $$\gcd(a,b)=\gcd(b, a \bmod b) 阅读全文
posted @ 2022-04-17 15:05
Plozia
阅读(565)
评论(0)
推荐(0)
摘要:
这道题是一道根号算法题目,但是并不是分块,而是一种新科技——根号分治。 根号分治的具体思想就是:设置一个阈值 \(p\),询问小于阈值的时候想办法快速计算答案,询问大于阈值的时候暴力计算答案,一般取 \(p=\sqrt{n}\)。 什么意思呢?拿这道题讲解一下。 这道题设置一个阈值 \(p=\sqr 阅读全文
posted @ 2022-04-17 15:05
Plozia
阅读(41)
评论(0)
推荐(0)
摘要:
1. 前言 本篇博文是欧拉函数的专项训练。 其实一般数论的题目就是推式子难,式子推出来了代码都好打。 如果您没有学过欧拉函数,可以看一看我的这篇博文:数论专题-学习笔记:欧拉函数 这里放一下欧拉函数的 8 个性质: 基本性质 1:若 \(p\) 为质数,那么 \(\varphi(p)=p-1\)。特 阅读全文
posted @ 2022-04-17 15:04
Plozia
阅读(255)
评论(0)
推荐(1)
摘要:
一些 update update 2021/5/20:删除了一些话语,精炼了一些语言。 update 2021/8/11:发现扩展性质 3 的证明有问题,讲解的也不清不楚,已经更正证明。 update 2021/8/12:发现基本性质 1 有误,已经更正。 update 2021/8/24:根据最近 阅读全文
posted @ 2022-04-17 14:59
Plozia
阅读(2154)
评论(3)
推荐(3)
摘要:
1. 前言 本篇博文将会重点讲解 dinic 求解费用流。 费用流全称:最小费用最大流,其一般的问题描述如下: 给出一张网络 \(G=<V,E>\),每条边有两个权值:\(f,v\)。 \(f\) 表示这条边的最大流量,\(v\) 表示单位花费,也就是说从这条边每流过一单位流量就要增加 \(v\) 阅读全文
posted @ 2022-04-17 14:55
Plozia
阅读(1139)
评论(2)
推荐(3)
摘要:
1. 前言 费用流,全称最小费用最大流,是网络流的一个分支。 最小费用最大流的问题描述如下: 给出一张网络 \(G=<V,E>\),每条边有两个权值:\(f,v\)。 \(f\) 表示这条边的最大流量,\(v\) 表示单位花费,也就是说从这条边每流过一单位流量就要增加 \(v\) 的花费。 现在要求 阅读全文
posted @ 2022-04-17 14:52
Plozia
阅读(346)
评论(0)
推荐(0)
摘要:
1. 前言 本篇博文将会重点讲解 ISAP 求解最大流。 ISAP 求解最大流,是目前笔者知道的 除了 HLPP 之外的速度最快的最大流算法。 在学习 ISAP 求解最大流之前,您需要对以下知识有所了解,包括但不限于:网络流基础定义,FF/EK 求解最大流的 思路,dinic 求解最大流的 代码实现 阅读全文
posted @ 2022-04-17 14:49
Plozia
阅读(412)
评论(0)
推荐(0)
摘要:
1. 前言 本篇博文讲解求解最大流的 dinic 算法。 在学这篇博文之前,请先确保掌握以下知识: 网络流的一些基础定义,参见:图论专题-网络流-学习笔记:网络流基础 FF 与 EK 求解最大流的思路,参见:图论专题-网络流-学习笔记:EK 求解最大流 下面假设读者已经掌握上述内容。 先来回顾 EK 阅读全文
posted @ 2022-04-17 14:47
Plozia
阅读(218)
评论(0)
推荐(0)
摘要:
1. 前言 莫队二次离线,是一种莫队,由 lxl 发明,专门用来处理莫队中转移不是 \(O(1)\),但是可以前缀和拆分的问题。 在学习之前,请先确保对莫队有一定的了解度,包括但不限于普通莫队及其优化。 如果您不知道普通莫队是什么,可以看一看我的 这篇博文。 2. 模板 模板题:P4887 【模板】 阅读全文
posted @ 2022-04-17 14:46
Plozia
阅读(680)
评论(1)
推荐(0)
摘要:
1. 前言 本篇博文为 EK 算法求解最大流。 在往下看之前,请先确保您已经了解网络流的一些基础定义,包括但不限于网络,流量,源点,汇点,最大流定义。 如果您对上述定义有一部分不了解,可以前往这篇博文查看:图论专题-网络流-学习笔记:网络流基础 2. 例题 模板题:P3376 【模板】网络最大流 P 阅读全文
posted @ 2022-04-17 14:45
Plozia
阅读(318)
评论(0)
推荐(0)
摘要:
1. 前言 网络流,属于图论的一种。 网络流看上去是一个新的东西,实际上就是新瓶装旧酒,相信讲完之后你会发现这玩意的一些基础定义什么的跟 有向图 没啥差别。 因为网络流算法有点多,于是本文在讲述基础定义之外同时提供算法导航,将后续的算法学习笔记添加入本博客中。 2. 详解 首先我们需要明白一点:网络 阅读全文
posted @ 2022-04-17 14:43
Plozia
阅读(262)
评论(0)
推荐(0)
摘要:
1. 前言 本篇博文将会专门讲述匈牙利算法的具体思路,实现过程以及正确性证明。 匈牙利算法是在 \(O(n \times e+m)\) 内的时间内寻找二分图的最大匹配的一种算法,其中 \(n\) 为左部点个数,\(m\) 为右部点个数。 在学习匈牙利算法之前,请先确保掌握以下名词: 二分图 匹配与最 阅读全文
posted @ 2022-04-17 14:41
Plozia
阅读(1032)
评论(0)
推荐(1)
摘要:
1. 前言 二分图是图论当中很重要的一个板块,由二分图的匹配与带权匹配可以推广出一般图的匹配与带权匹配。 本篇博文主要讲解:二分图的定义、性质、判定。 本文部分地方参考了 oi-wiki 的资料,在此表示感谢。 本篇博文约定: 图 \(G=<V,E>\) 表示图 \(G\) 的所有点的集合为 \(V 阅读全文
posted @ 2022-04-17 14:40
Plozia
阅读(1831)
评论(0)
推荐(0)

浙公网安备 33010602011771号