一些数论性质与方法

结论 因数个数 对于一个数 $n$,它的因数个数的数量级为 $O(n^{\frac{1}{3}})$。 小于 $n$ 的质数个数 小于 $n$ 的质数个数为 $O(\frac{n}{\log n})$。

Splay

介绍 Splay 是一种自平衡的 BST(二叉搜索树)。 模版 代码 struct Splay { struct Node { int par, child[2], sz, cnt; ll val, flag; } tr[maxn]; int rt, id = 0; void push_up(int cur) { if (!cur) return; int lc = tr[cur].child[0], rc = tr[cur].child[1]; tr[cur].sz = tr[lc].sz + tr[rc].sz + tr[cur].cnt; } void push_down(int

扫描线

介绍 扫描线是一种思想,本质上是利用了线段树。可以用来处理 矩形面积并,矩形周长并 等经典问题。 如图,我们用一条竖着的线从左到右扫描。我们将每一个

可并堆/左偏树

介绍 可并堆是一种特殊的最小/大堆,使得两个堆之间能用 $O(\log n)$ 的时间内进行合并。由于其形态,也叫左偏树。 定义 距离:一个节点 $x$ 的距离 dis[x] 定义为:$x$

线段树优化建图

介绍 线段树优化建图用于解决图中边数过多,不能直接建的问题。 直接看例题: 例1 CF786B. Legacy 题意 给定 $n$ 个点的有向带权图,初始状态下图中没有边。给定 $q$ 个操作

笛卡尔树

定义 笛卡尔树是一种二叉树,每一个结点由一个键值二元组 $(k,v)$ 构成。 性质 $k$ 满足 BST 的性质 $v$ 满足 min-heap 的性质。 如果笛卡尔树的 $k,v$ 值确定,且 $k$ 互不相同,$v$ 互

整体二分

介绍 整体二分是一种思想,用于同时二分多组询问,在题目满足以下条件时可以用: 有多组询问,每组询问可以通过二分解决。 询问离线。 询问之间互相独立。

线性筛

介绍 线性筛不仅能用 $O(n)$ 求出每一个数是否为质数,它还能求出每一个数的因数数量,因数和,甚至更加general的除数函数,莫比乌斯函数等等。 总结来

NAC2023 Training Camp Day2

A. Fair Bandwidth Sharing 题意 给定 $n$ 个区间 $[l_i, r_i]$,并且给定 $n$ 个权值 $d_i$,和一个常数 $t$。 定义 $y_i = t \frac{d_i}{\sum\limits_{j=1}^n d_j}$。 求一组 $x_i$,使得满足以下所