10 2022 档案
摘要:简单来说这道题就是求一个 的矩阵的最大子矩阵和。 (因为求的是黑色石板与白色石板的数量差,所以代表白色石板的“0”可以看作 -1,这样就将问题转化为了求最大子矩阵和) 思路: 首先,这个子矩阵可以是任意大小的,而且起始点也可以在任何地方,所以,要把最大子矩阵找出来,我们要考
阅读全文
摘要:这是我第二次参加 ,尽管 组的题目的难度让我清晰的意识到随着信息学的学习逐渐普及化,它的难度也会逐年提升,但是因为有了前一次考 的经验,这次考试前并不是很紧张。 周一用了晚自习的时间看了看动态规划、搜索,之后又简单的复习了一下快速幂、gcd等代码。 T1,第
阅读全文
摘要:快读快写是利用 和 比 和 速度快的特点来对输入和输出进行优化 快读 int read(){ int x=0,f=1; char ch=getchar(); while(ch < '0' || ch > '9'){ if(ch
阅读全文
摘要:写在前面 在 中,大多数情况下,善良的出题人为了避免高精度等大整数计算,常常会要求输出答案对一个数(大多是质数)取模的情况,但这衍生了一个问题:若题目中计算需用到除法而我们知道,除法是不能边除边取模的。 在大部分情况下 $\lfloor\frac
阅读全文
摘要:定义: 在大于1的自然数中,除了1和它本身以外不再有其他因数。 性质: 素数的个数无限多 所有大于2的素数都可以唯一地表示成两个平方数之差 当 为大于2的整数时, 和 两个数中,如果其中一个数是素数,那么另一个数一定是合数 如果 是素数, 与 $p
阅读全文
摘要:欧拉函数和欧拉定理 欧拉函数的定义 欧拉函数(Euler's totient function),即 ,表示的是小于等于 和 互质的数的个数。 比如说 。 当 n 是质数的时候,显然有 。 欧拉函数的
阅读全文
摘要:一.莫队(静态莫队) 我们以 Luogu P3901 数列找不同 为例讲一下静态莫队 这道题是个绿题,因为数据比较弱,但真是一道良心的莫队练手题 莫队是由前国家队队长莫涛发明的 莫队算法的精髓就是通过合理地对询问排序,然后以较优的顺序暴力回答每个询问。处理完一个询问后,可以使用它的信息得到下一个询问
阅读全文
摘要:Luogu P7771 【模板】欧拉路径 题意 给定一个 个点 条边的有向图,求该图字典序最小的欧拉路径。 数据范围 对于 50% 的数据, 。 对于 100% 的数据, ,$m\leq 2\times 10^
阅读全文
摘要:单调队列,顾名思义就是一个元素之间的关系具有单调性的队列 我们通过一道例题来讲解 最大子序和 题目大意 给定一个长度为 的整数序列(可能有负数),从中找出一段长度不超过 的连续子序列,使得子序列中所有数的和最大。 。 solution 计
阅读全文
摘要:并查集(Disjoint--Set) 是一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构。详细地说,并查集包括如下两个基本操作: , 查询一个元素属于哪一个集合。 , 把两个集合合并成一个大集合。 为了具体实现并查集这种数据结构,我们首先需要定义集合的表示方法
阅读全文
摘要:0、更新日志 2021.12.11 纠正了“3、实现”部分存在的的小问题;增加了 “0、更新日志” 2021.7.29 首次发布本文 感谢 大佬对完善本文做出的贡献 1、综述 假设有编号从1到 的 个点,每个点都存了一些信息,用[L,R]表示下标从 到 的
阅读全文
摘要:0. 最短路径问题介绍 问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径 1. Dijkstra算法介绍 算法特点: 迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他
阅读全文
摘要:比赛前一天晚上,检查了一遍身份证和考场信息,(这里有一个惨痛的教训:大概是csp二轮,早上起来找不到身份证了,心急如焚,晚了半个小时才出门,还好没迟到,不过二轮分数不太理想……)打开洛谷再看了看一些算法的板子(背包、最短路什么的),然后找了noip2016的一道题做 P2827 蚯蚓 也没过,看时间
阅读全文
摘要:1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时
阅读全文
摘要:主席树的定义与作用 主席树,也称可持久化线段树(主席树为什么叫主席树?据说因为它是一个名字缩写为 的神犇发明的,与当时主席的名字缩写一样......) 什么是可持久化线段树呢,即为一颗记录了所有更新过程的线段树。能够处理出从第 次更新到第 次更新的线段树变化。 前置知识
阅读全文
摘要:在二叉树中,有两组非常重要的性质。第一种是“堆性质”,即每个节点的值都比他的左右子节点的值更优。第二种就是“BST性质”,就是每个节点的值大于左子树上所有节点的值,小于右子树上所有节点的值。它是二叉查找树以及所有平衡树的基础。 二叉查找树(BST) BST的建立 为了避免越界,一般在BST中先插入一
阅读全文
摘要:最长公共子序列 给定两个长度分别为 的序列 试求出最长的公共子序列。 做法 我们考虑进行动态规划 设 表示看完 数组的前 位, 数组的前 位的最长公共子序列的长度 那么我们最终的答案就是 $f[n][m
阅读全文
摘要:最长上升子序列 1、 做法 首先我们要知道,对于每一个元素来说,最长上升子序列就是其本身。那我们便可以维护一个 数组,使得 表示以第 元素为结尾的最长上升子序列长度,那么对于每一个 而言,初始值即为 1; 那么 数组怎么求呢?我们
阅读全文
摘要:1、问题类型描述 差分约束是一种特殊的 元一次不等式组,它包含 个变量 以及 个约束条件。 每个约束条件是由两个其中的变量做差构成的,形如 ,其中 $ i \not= j, ; 1 \le k \le
阅读全文
摘要:网络流是算法竞赛中的一个重要的模型,它分为两部分:网络和流。 网络,其实就是一张有向图,其上的边权称为容量。额外地,它拥有一个源点和汇点。 流,顾名思义,就像水流或电流,也具有它们的性质。如果把网络想象成一个自来水管道网络,那流就是其中流动的水。每条边上的流不能超过它的容量,并且对于除了源点和汇点外
阅读全文
摘要:Description 若对于除首尾位置之外的元素,每一个位置要么比两侧相邻的数字小,要么比两侧相邻的数字大,则称这样的数组为波浪数组 现在有一个长度为 的数组,你每次操作可以将任意一个位置的数字修改成任意一个新数字。 求将其变成一个波浪数组所需的最小修改次数 Solution 首先,对于一
阅读全文
摘要:状压,即状态压缩的简称,是一种(在数据范围较小的情况下,一般来说 )将每个物品或者东西选与不选的状态“压”成一个整数的方法 通常我们采用二进制状压法,(对于二进制状压)即对于一个我们“压”成的状态,这个整数在二进制下中的 1 表示某个物品已选,而 0 代表某个物品未选,这样我们就
阅读全文
摘要:~~所有随机化算法的核心都是 概率 正确率 能够近似正解从而优雅骗分~~ 随机化贪心 贪心,是一个很好的算法,只可惜适用的范围不广。随机化,是一个很好的算法,只可惜正确率不高。 如果将这两个算法结合起来,我们能不能得到一个适用范围广、正确率较高的算法呢? 答案是肯定的。 随机化贪心
阅读全文
摘要:基环树(环套树) 众所周知,n个点的树有n-1条边。若在树上任意添加一条边,则会形成一个环。除了环之外,其余部分由若干棵子树构成。 有n个点n条边的图,每个点只有一个出边或入边。 在树上添加任意一条边,形成一个环 基环树操作 基环树找环 拓扑排序 tarjan 找环(直接 dfs 也可以) NOIP
阅读全文
摘要:前言 有时想要用一些大质数又查不到qwq,所以直接打个表下来。每个数量级取50个,应该够用了。 100以内质数 | 2 | 3 | 5 | 7 | | : : | : : | : : | : : | | 11 | 13 | 17 | 19 | | 23 | 29 | 31 | 37 | | 41 |
阅读全文
摘要:下面介绍的字符串 函数把一个任意长度的字符串映射成一个非负整数,并且其冲突概率几乎为零。 取一固定值 ,把字符串看做 进制数,并分配一个大于零的数值,代表每种字符。 一般来说,我们分配的数值都远小于 。例如,对于小写字母构成的字符串,可以令 $a=1,b=2
阅读全文
摘要:环形结构上的动态规划问题 在许多环形结构问题中,我们都能通过枚举法,选择一个位置把环断开,变成线性结构进行计算,最后根据每次枚举的结果求出答案。我们把能用上述枚举方式求解的环形问题称为“可拆解的环形问题”,这也是本节的主要研究对象。我们的目标是采取适当策略避免枚举,从而降低时间复杂度。 通常来说,我
阅读全文
摘要:Manacher算法是一个用来查找一个字符串中的最长回文子串(不是最长回文序列)的线性算法。它的优点就是把时间复杂度为 的暴力算法优化到了 。首先先让我们来看看最原始的暴力扩展,分析其存在的弊端,以此来更好的理解Manacher算法。 暴力匹配 暴力匹配算法的原理很简单
阅读全文
摘要:~~STL大法好~~ STL优先队列就是一个封装的堆,学会熟练运用,免去手写堆的麻烦 ~~其实是不会自己写~~ 格式:priority_queue< 类型 , vector<类型> , 比较类 > q; 优先队列的源码比较奇特,别的容器默认从小到大排序,但是 priority_queue<> 默认是
阅读全文
摘要:一.什么是反悔贪心 顾名思义,反悔贪心就是两个操作:“反悔” + “贪心”。 一般来说,贪心仅能解出局部最优解。 那么在要求全局最优解时,我们就可以利用“反悔”这个操作解决。 反悔贪心的思想是:每次都进行操作,在以后有最优情况的时候再取消这次操作。 二.反悔贪心基本操作 一般来说,我们采用一个堆来存
阅读全文
摘要:树链剖分是把一棵树分割成若干条链,以便于维护信息的一种方法,其中最常用的是重链剖分(Heavy Path Decomposition,重路径分解),所以一般提到树链剖分或树剖都是指重链剖分。除此之外还有长链剖分和实链剖分等,本文暂不介绍。 本质思想是把树剖成可以用线性结构存储的结构,然后可以用数据结
阅读全文
摘要:~~看到标题的 Tree to Line 是不是会想到替罪羊树的重构函数 “TtoL” 但其实这俩玩意八竿子打不着~~ 基本内容 我们经常会遇到树的问题,但树是非线性的结构,操作起来始终还是麻烦,如果我们能把树改造成线性结构,有什么方法?对,就是今天要讲的DSF序; dfs序用于树状结构中,如图:
阅读全文
摘要:Lucas定理 计算 ,其中 为质数。 $${ n \choose k } \equiv { n%P \choose k%P } \times {\lfloor n/P \rfloor \choose \lflo
阅读全文
摘要:引入 在普通的线段树中,我们一般要开 的数组以避免越界。然而,在一些题目中,空间限制并不允许我们这样做。 考虑如下问题: 有一个长度为 的数组,初始全部为 。给出 次操作,每次操作形如 1 x y k,表示将区间 内每个数加上 ;或者形如 2 x
阅读全文
摘要:(〇)写在前面的话 所谓概率/期望题,本质上还是dp。实际上,在很多情况下,概率/期望与计数dp是一样的。 (一)有限情况下的概率/期望 这部分题目是与计数类dp最相关的。 1.1 关于古典概型 关于古典概型是以这样的假设为基础的,即随机现象所能发生的事件是有限的、互不相容的,而且每个基本事件发生的
阅读全文
摘要:二、无向图的割点与桥 什么是无向图?简单来说,若一个图中每条边都是无方向的,则称为无向图。 割点 若从图中删除节点 x 以及所有与 x 关联的边之后,图将被分成两个或两个以上的不相连的子图,那么称 x 为图的割点。 桥 若从图中删除边 e 之后,图将分裂成两个不相连的子图,那么称 e 为图的桥或割边
阅读全文
摘要:~~看来是非学不可了~~ 前言 到目前为止,我们用数据结构处理的大多是序列上的问题。这些问题的形式一般是给定序列中的两个位置 和 ,在区间 上执行查询或修改指令。如果给定一棵树,以及树上的两个节点 和 ,那么与“序列上的区间”相对应的就是“树上两点之间的路
阅读全文