摘要:
点分治 在以前,我们做的都是在序列上的分治问题,现在我们研究一类用于树上静态路径统计的分治算法——点分治(动态需要扩展-点分树) 其核心思想是在树上进行分治 例题:TREE 给定一个有 N 个点(编号 0,1,…,N−1)的树,每条边都有一个权值(不超过 1000)。 树上两个节点 x 与 y 之间 阅读全文
摘要:
Splay Splay基本操作 Splay是一类二叉查找树,与其他平衡树相比,也是运用旋转保证复杂度 其最重要的操作便是$rotate$ $and$ $spaly$了 先来谈旋转,我们都知道,旋转是这样的 仔细观察后,我们会发现,旋转操作可以拆解为三步,设$x$是$y$的父亲,$k$表示$y$是$x 阅读全文
摘要:
分块 望月悲叹的最初分块 分块,优雅的暴力 分块也是同线段树等结构一样,维护区间操作的,不同于线段树和树状数组的是,分块所维护的信息并不需要满足区间可加性,以此,分块可以处理许多线段树等结构不可以处理的问题 简单来说,分块就是将整个序列分为若干个大小相同的块(最后一个可能不同),然后对于每一个块再加 阅读全文
摘要:
线段树 概述 线段树是维护区间问题的利器,可以完成许许多多的区间问题,轻松完成区间修改区间统计,前提是只能维护满足区间可加性的信息 线段树基于分治思想,即将一个$[1,n]$的区间按照对半分,这样分成$O(n)$个节点。在线段树上,每一个节点代表一个区间,维护其内的信息,于是按照对半分的思想,我们可 阅读全文
摘要:
树状数组 概述 树状数组是一种基于倍增和二进制划分思想,用于维护简单区间操作的数据结构,短小精悍 我们知道,每一个数都可以使用二进制表示为$a_0a_1a_2a_3…a_k(\forall i\in[0,k],a_i=0/1)$(由低位到高位共$k+1$位)的形式,其中第$i$位所表示的二进制的值为 阅读全文
摘要:
并查集 概述 并查集主要用于对于多个集合的从属关系维护 它有两个基本操作 查询当前所在集合 合并两个集合 通过并查集,我们可以对许许多多的问题进行优化,比如树上跳链等等 并查集能够在一张无向图里维护节点连通性,事实上,并查集擅长维护许多具有传递性的关系 基本操作 实现: 我们对于每一个集合采用代表元 阅读全文
摘要:
SG函数 NIM博弈 概述:有$n$堆物品,每堆物品有$A[i]$个,有两名玩家轮流操作,每一次都可以在其中一堆拿任意多个,但不能不拿,取走最后一件物品者获胜,在双方都使用最优策略的情况下,问先手是否必胜 定理: $nim$游戏先手必胜,当且仅当 $$\bigoplus_{i=1}^n A[i]\n 阅读全文
摘要:
0/1分数规划 $0/1$分数规划模型是指,给定:$a_1\sim a_n,b_1\sim b_n$,要构造$x_1\sim x_n(\forall i\in[1,n],x_i=0\text{或}1)$ 使得 $$\frac{\sum_{i=1}^na_ix_i}{\sum_{i=1}^nb_ix_ 阅读全文
摘要:
期望 概率与数学期望 在概率论中,我们把一个随机实验的某种可能的结果称为样本点,把所有可能的结果构成的集合称为样本空间,在一个给定的样本空间中,随机事件就样本空间的自己,即若干个样本点构成的集合,随机变量就是把样本点映射为实数的函数,随机变量分为离散型和连续性两种,我们主要讨论离散型随机变量,即取值 阅读全文
摘要:
容斥与莫比乌斯函数 容斥原理: 介绍:设集合$S_1\sim S_n$,记$|S_i|$表示集合$S_i$的大小,设$\cup$表示集合的并集运算,$\cap$表示集合的交集运算,则 $$ \left|\bigcup_{i=1}^nS_i\right|=\sum_{i=1}^n|S_i|-\sum_ 阅读全文