04 2024 档案
树上背包
摘要:简介 树上背包,顾名思义,就是在树上做背包。 比如这道题: 收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。 从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转
vscode配置
摘要:讲解链接 MinGW下载 点击 mingw-19.0.exe,把它安装在你想要的地方(注意路径一定不能包含中文!!!)。 接着在开始中搜索编辑系统环境变量。点击环境变量,双击Path,点击新建,接着把 MinGW 的地址复制上去再加上个 \bin,然后连点三个确定。 vscode下载 点击Downl
区间众数问题
摘要:简介 一个数列的众数是指其中出现次数最多的数,求解区间众数问题有很多种方法。 方法1 注意,此种方法只用于求解众数出现次数。 使用莫队求解。 可是如何维护呢? 首先进行离散化。 我们定义 表示数字 在当前区间中的出现次数, 表示当前区间中出现次数为
折半搜索
摘要:简介 折半搜索是一种优化搜索的方法,一般可以将 优化为 。其思想为将一个搜索拆分成两个搜索,分别处理前一半和后一半,使用 map 或 vector 等东西记录第一次搜索的信息,在第二次搜索时查询。 如以下代码: void dfs(i
莫队
摘要:简介 莫队是一种离线求区间信息的算法,可以做到 。莫队中使用了分块的思想。 首先考虑一个问题:给定一个长度为 序列 和 次询问,每次询问查询区间 的和。(请先忘掉前缀和、线段树、树状数
状压dp
摘要:简介 状压dp是一种将一堆 和 压缩成一个二进制的dp,具体如下: 这里的 是一个整数,但我们会把他看作是他的二进制形式。虽然时间复杂度没有变,但写起来更方便。状压dp一般适
强连通分量、缩点
摘要:强连通分量 定义:强连通分量是指一个任意两点都可互相到达的极大子图。 求解思路和桥、割点和边双连通分量很类似。 首先跑出一颗dfs树,令 表示 的时间戳, 表示 的子树中仅通过非树边能到达的 。 比如下
桥、割点和边双连通分量
摘要:桥 定义:删除后会增加联通块数量的边被称作桥。 那么,如何求解呢? 方法一 首先跑出一颗dfs树。比如下图( 的边是非树边): 可以发现,所有非树边和其构成的环上的所有边不可能是桥,因为删去后仍可以通过环的另一半。比如上图中只有 一个桥。那是不是除了这些边以外都
哈希
摘要:简介 哈希是一种能把字符串(实际上数组也行,不过本文都会以字符串为例)映射成一个数的算法,哈希就是把一个字符串转成一个 进制数,但由于得到的数可能会非常大,所以其中会用到取模,因此哈希也有些玄学(建议 CF 有赛后 hack 的比赛不要使用哈希,或提高哈希的安全度)。 普通哈希 可以将
字典树
摘要:简介 字典树是一种用来维护多个字符串的前缀的数据结构,时空复杂度均为 。 字典树是一颗外向树(边从父亲连向儿子),每条边的边权都为一个字符,一个结点对应的字符串为从根节点到当前结点的边的字符组成的字符串。 比如,当 ,\(S_1,S_2,\dots,S_5
线段树
摘要:简介 线段树是一种 建树, 区间查询区间修改的数据结构。线段树的思想就是把一个区间分成左右两半处理。线段树会将一个区间视作一个点,一个点的左儿子为左半区间,右儿子为右半区间。一般情况下,若一个点编号为 ,则其左右儿子编号分别为 \(2i,2i+1
组合数学
摘要:逆元 若 ,则 。 递推求乘法逆元 \[令模数为 p,正整数 i,a=\lfloor\frac{p}{i}\rfloor,b=p\operatorname{mod} i,且b\ne0。\ a\cdot i+b=p\ \Downarrow\