我连现在的我都无法认同 一直一直...我都只是在否定现在的自己 为什么会这样呢 要怎么做才会不这样呢 将来要做的事我不知道 因为连现在要做的事都还不知道
随笔分类 - OI知识
摘要:
2023.5.6 写的太烂了重新写 差分约束系统 定义 差分约束系统是一种特殊的 元一次不等式组,它包含 个变量 以及 个约束条件,每一个约束条件都是两个其中的变量做差构成的,形如 ,
阅读全文

摘要:
定义 最小生成树是指给定一个带权连通图 G,如果里面有一个子图 G' 中的边权和加起来最小并且使得所有的点都能两两相通。 性质 从上述的定义可以看出,最小生成树有以下性质: 如果图 G 中有 n 个点的话,G'中的边数为 n-1 且 G' 中不含有环。 最小生成树可能是一个,也可能是多个。 还有一些
阅读全文

摘要:普通并查集 我们在处理问题的时候,可能会遇到一些需要维护每个元素所在的集合的问题,而并查集却恰好完美解决了这个问题。 对于普通的并查集,他支持的操作比较少,只有合并和查询,合并是指把两个集合合并成一个,而查询是询问两个元素是否在同一集合内;对于这两种操作,我们可以用一个数组 来存放当前点所属
阅读全文
摘要:什么是期望 当我们在做一些题目的时候可能会 balablabla 一堆,然后问你 XXX 的期望,这个时候像我这种连期望定义都不知道的人就傻了,所以先来了解一下定义是什么。 我们现在有一个变量 和一个序列 ,其中值为 的数可能不只有一个, 的取值可能为 $a_{1
阅读全文
摘要:
定义 SAT是适定性(Satisfiability)问题的简称 。一般形式为k-适定性问题,简称 k-SAT。 可以证明,当 时,k-SAT 是 NP 完全的。因此一般讨论的是 的情况,即 2-SAT 问题。 我们通俗的说,有 个布尔变量 。
阅读全文

摘要:
主席树,又名可持久化线段树,可以访问多个历史版本的树上存的信息。 图及其他来源于此:https://www.cnblogs.com/hyfhaha/p/10678275.html 基本思想 用到的基本思想就是对于每一个修改版本的树,只新建修改后的节点,如果是每一个版本新开一个线段树的话空间一定不够。
阅读全文

摘要:
前置知识 表示将 转为二进制后的数中 的个数。 结论 $$\sum_{i=1}^{n} \text{ popcount}(i)=\sum_{i=1}^{\left \lceil \log_{2}{n} \right \rceil-1 } \l
阅读全文

摘要:
重载运算符 作用 重载运算符的作用大致可以理解为自定义一个运算法则,比如当我们在使用结构体的时候,我们有时候会用到优先队列,但是优先队列并不能对于结构体使用,所以这个时候我们就需要用到重载运算符来自定义一下运算法则(在优先队列里其实是比较法则)。 如何理解? 来看下面这个代码。 struct sb{
阅读全文

摘要:
双连通分量 参考博客:https://www.cnblogs.com/jiamian/p/11202189.html#_2 概念 双连通分量有点双连通分量和边双连通分量两种。若一个无向图中的去掉任意一个节点(一条边)都不会改变此图的连通性,即不存在割点(桥),则称作点(边)双连通图。 点双连通和边双
阅读全文

摘要:
# AC 自动机 此博客参考 [Luckyblock 的博客](https://www.cnblogs.com/luckyblock/p/14248836.html),以及[此博客](https://www.cnblogs.com/cjyyb/p/7196308.html)还有以及[pokefunc
阅读全文

摘要:# KMP算法 本文参考资料:https://www.zhihu.com/question/21923021 KMP算法是一种字符串匹配算法,可以在 的时间复杂度内实现两个字符串的匹配。 ## 字符串匹配问题 首先我们需要了解一下什么是字符串匹配问题。 比如给你两个串 ,$
阅读全文
摘要:笛卡尔树 下文的资料多摘自OI Wiki 性质 笛卡尔树是一种二叉树,每一个节点都由一个键值二元组 构成。要求 满足二叉搜索树的性质,而 满足堆的性质。如果笛卡尔树的 , 键值确定的话,且 互不相同, 互不相同,那么这个笛卡尔树的结构是唯一
阅读全文
摘要:
莫队 不是提莫队长。 普通莫队 莫队算法是由莫涛发明的算法,所以称为莫队算法。 莫队算法可以说是把暴力和分块融合在一起的一种算法,主要可以解决一些不强制在线的操作; 主要的思想就是通过挪动区间指针来减少时间复杂度,这个需要把每一次询问的区间给存起来,然后按照“如果区间的左端点在一个块里就按右端点从小
阅读全文

摘要:
# 分块 分块是一种非常暴力的做法,但是它复杂度是明显比线段树啥的要高的,因为他好理解。 分块的基本思想是:通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。 分块的核心思想就是把一些数据给分成一定数量的小块,然后在进行区间操作的时候直接对于包含
阅读全文

摘要:
之前对最短路的认识不是很充分,结合之前的博客来重新总结一下最短路的问题的解法。 Floyd算法——小数据杀手 相信最先接触的最短路算法就是Floyd算法了,因为他精简的代码实在是最短路的一股清流,但是 的时间复杂度甚至不用刻意去卡,只要数据大于500,那基本Floyd是过不去了。 F
阅读全文

摘要:排序最速传说——sort 我们都学过一些排序的写法,比如冒泡排序,快速排序之类的东西,举个例子来说吧,这是快速排序的代码: #include<iostream> using namespace std; int a[100001]; void quicksort(int l,int r) { int
阅读全文
摘要:2022.11.24:晚上zxs学长发来了他的博客,所以我仿照写一篇。 https://www.cnblogs.com/Dita/p/duipai.html 对拍 对拍这个东西,就是可以比较两份代码跑出来的答案的一个程序,通常是你的代码和标称对比或者你考试时写的你认为的正解与暴力对比,可以给自己写出
阅读全文
摘要:基环树 以下内容参考:https://www.cnblogs.com/fusiwei/p/13815549.html 概念 基环树也叫环套树,标准定义是一个有 个节点 条边的联通图,如果不是联通的,则称其是一个基环树森林。 例如下面这张图就是一个基环树。 如果我们把里面的环内的任意一
阅读全文