摘要:
一道 LCT 好题。 一种简单的 \(O(n^2)\) 就是枚举区间然后并查集看一下有没有成环。 注意到一个性质:如果 \([l,r]\) 内边已经成环,那么 \([l,r'],r' \in [r,n]\) 内边肯定都已成环。 据此,考虑设置两个指针 \(l,r\),对于每一个 \(l\) 求出对于
阅读全文
posted @ 2022-04-17 21:54
Plozia
阅读(45)
推荐(0)
摘要:
1. 前言 cdq 分治,是一种用于计算偏序问题的离线算法,常数较小,跑的肯定比 kdtree 要快。 如无特殊说明,默认下文的点不重合,数字都是正整数。 2. 详解 cdq 最经典的是解决三维偏序,四维偏序可以 cdq 套 cdq 但是五维以上偏序还是写 kdtree 得了。 一维偏序:一维坐标系
阅读全文
posted @ 2022-04-17 20:04
Plozia
阅读(206)
推荐(0)
posted @ 2022-04-17 19:04
Plozia
阅读(665)
推荐(6)
摘要:
一道线段树分治套路好题。 将删边变为加边,考虑一条边能够加到哪些集合里面。注意,这里不能直接添加,也就是说对于边 \((x,y)\),如果其在集合 \(t\) 里面,不能直接插入到区间 \([1,t-1],[t+1,m]\) 中,这也是我的一个思维定式导致的误区。 正确的做法是应该都存下来,然后分段
阅读全文
posted @ 2022-04-17 19:03
Plozia
阅读(50)
推荐(0)
摘要:
1. 前言 线段树分治,是一种数据结构,常用来离线维护一张图的连通性。 大致来讲,这张图的边会在一段时间内出现,别的时间消失,然后会有一些询问,线段树分治解决的就是这样的问题。 2. 详解 模板题:P5787 二分图 /【模板】线段树分治,下面假定 \(n,m\) 同阶。 首先考虑一个暴力做法:对于
阅读全文
posted @ 2022-04-17 19:03
Plozia
阅读(109)
推荐(0)
摘要:
一道排列组合题,还是我的排列组合太菜了…… 选必三重修警告 先说明一个东西:对于 \(n\) 个楼房,高度限制为 \(m\),那么高度不下降的方案数为 \(C_{n+m-1}^{m-1}\)。 理由:\(n\) 个楼房选高度,变成 \(n+m\) 个楼房选 \(m\) 个高度,并且每个高度必须有得选
阅读全文
posted @ 2022-04-17 19:02
Plozia
阅读(52)
推荐(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
阅读(75)
推荐(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
阅读(60)
推荐(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
阅读(57)
推荐(0)
摘要:
一道不错的题目,只不过能被 hash 和维护若干次方和通过,本篇讲正解。 考虑一个乱序序列重排后是等差数列的一些条件(设区间 \([l,r]\),公差为 \(d\)): 数列最大值 - 数列最小值 = \((r-l)*d\)。 相邻两数的差的绝对值的最大公约数是 \(d\)。 序列中没有重复的数。
阅读全文
posted @ 2022-04-17 18:59
Plozia
阅读(105)
推荐(0)
posted @ 2022-04-17 18:58
Plozia
阅读(476)
推荐(0)
posted @ 2022-04-17 18:56
Plozia
阅读(200)
推荐(1)
posted @ 2022-04-17 18:53
Plozia
阅读(2365)
推荐(3)
摘要:
1. 前言 整除分块,是一种数论的基础算法,必备知识,在很多题目中都有涉及但是题目很基础。 整除分块主要解决的是这样一类问题:求值: \(\sum_{i=1}^{n}f(i)g(\Big\lfloor\dfrac{k}{i}\Big\rfloor)\) 其中已知 \(f\) 的前缀和或者能 \(O(
阅读全文
posted @ 2022-04-17 18:53
Plozia
阅读(154)
推荐(0)
摘要:
1. 前言 Prufer 序列,是一种用来描述树的序列,一般用于一些树上度数统计的题。 注意作者是 OIer,考虑到 Prufer 序列在 OI 里面的应用等,本篇文章只讲述 $O(n \log n)$ 的求法。 2. 详解 设有一棵 $n$ 点的树,则这个 $n$ 点的树和一个长度为 $n-2$
阅读全文
posted @ 2022-04-17 18:52
Plozia
阅读(329)
推荐(1)
摘要:
一道线段树合并的题。 首先我们发现,如果我们交换了两棵子树,影响到的逆序对数量只会是这两棵子树交换之后数列改变的逆序对数量,对前面的数列和后面的数列并没有影响,对这两棵子树内部也没有影响,因为逆序对只关注相对位置及数的大小。 据此我们先建树,然后对于每个点整一棵值域线段树维护子树内的数,这个过程可以
阅读全文
posted @ 2022-04-17 18:51
Plozia
阅读(74)
推荐(0)