随笔分类 - A -- 浅谈算法
摘要:线性基是竞赛中常用来解决子集异或一类题目的算法。(摘自百度百科) 线性基是一个整数序列的特殊集合,每个序列都至少存在一个线性基,同一个序列可以拥有多个不同的线性基;反过来,一个线性基只对应一个确定的序列。 线性基存在如下三条性质: 原序列中任意一个数都可以由若干个线性基内的数异或得到 线性基内的数无
阅读全文
摘要:拉格朗日插值法:是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法(摘自某度百科) 首先我们需要知道,拉格朗日插值法有何用? 注:以下部分内容参考知乎:如何直观地理解拉格朗日插值法? 举例子永远是最好的方法 比如说,已知下面这几个点,我想找到一根穿过它们的曲线: 个点是肯定可以
阅读全文
摘要:在学习AC自动机之前,你需要两个前置知识: "Trie树" , "KMP" 首先我们需要明白,AC自动机是干什么的~~(用来自动AC的)~~ 大家都知道KMP算法是求单字符串对单字符串的匹配问题的,那么多字符在单字符上匹配该怎么办? 我们举个栗子 ——求 aabb 在 aabababbbabbabb
阅读全文
摘要:KMP是啥?~~KMP当然是KMPlayer的简称啦~~ KMP算法是用来解决字符串匹配的一种算法,由D.E.Knuth、J.H.Morris和V.R.Pratt同时发现,然后它可以用来干啥呢?我们上个例题: 给定两个字符串,问在中出现了多少次,出现的起始位置不同即为不同 $O
阅读全文
摘要:很多情况下,我们会遇到在树上进行操作的题目,比如求树上路径长度为的路径条数 大力枚举?每次枚举两个点暴力算距离,时间复杂度,高级数结维护一下,emmmm……,都TM高级数结维护都跑不了1w的数据,(╯°Д°)╯︵ ┻━┻ 大力枚举肯定不行了,我们得换
阅读全文
摘要:前言 莫比乌斯反演~~(又称懵逼钨丝繁衍)~~,那种让人看了就懵逼的东西~~(其实是我太菜了)~~ 莫比乌斯反演在知道之后对解题十分有帮助,的柿子分分钟化成 那么,什么是莫比乌斯反演呢? 莫比乌斯反演 1.莫比乌斯反演 如果说,有和是定义在
阅读全文
摘要:BST(二叉查找树)是个有意思的东西,种类巨TM多,然后我们今天不讲其他的,我们今天就讲splay 首先,如果你不知道Splay是啥,你也得知道BST是啥 如上图就是一棵优美的BST,它对于每个点保证其左子树内所有点小于自己,右子树内所有点大于自己,而且这棵树高只有,所以找一个点只需
阅读全文
摘要:前言 首先树链剖分需要使用到线段树知识,不会线段树的童鞋请移步至 "浅谈算法——线段树" 在做题中我们会看到一些“在一棵树上进行路径修改、求极值、求和”的题,乍一看能够用线段树解决,其实仅仅凭线段树是根本无法完成的。这时候,我们就需要用到一种看起来高级的复杂算法——树链剖分 基本概念 重儿子 :si
阅读全文
摘要:网上的博弈博客和论文有很多,但是有些没有详细的证明,仅仅是给出了结论。今天作者将一些常见的博弈论模板集中起来,给大家介绍一下博弈论中一些单一游戏的决策和常见的Nim模板与证明。 注:下列游戏都建立在双方都有最优策略的情况下,若未加以说明,则每人每次至少取一个石子。 例1:取石子游戏之一 有两个游戏者
阅读全文
摘要:##一.前言 前面我们已经知道线段树能够进行单点修改和区间查询操作(基本线段树)。那么如果需要修改的是一个区间该怎么办呢?如果是暴力修改到叶子节点,复杂度即为,显然是十分不优秀的。那么我们能不能向区间查询一样把复杂度降到呢? ##二.算法流程 线段树肯定是兹
阅读全文
摘要:##前言 线段树作为高级数据结构,可以做非常非常多的事情,那么线段树到底是什么呢,我们就此了解下 ##一.基本概念 线段树并非什么特别高级的东西,顾名思义,它也就是一棵树。那么为什么叫线段树呢?因为树的节点上存的就是一些区间,也就是线段。那么它长啥样呢? 嗯,如上图,就是一个区间[1,9]的线段树。
阅读全文
摘要:字符串算法在各大高级比赛中均有用到,所以,学习好字符串算法对我们而言十分重要。那么,今天我们就给大家介绍一个快速求回文串的算法,Manacher算法,我们也习惯性叫它马拉车算法。 ###一.引入 首先我们要知道什么是回文串——当一个字符串它从右到左和从左到右读是一样的,我们就称它为回文串。考虑一下最
阅读全文
摘要:##一.引入 二分图匹配算法是一个非常有用的算法,我们首先从一个简单的题目引入。 给你n个水果,m个箱子,每个水果只能被放在指定的几个箱子里,每个盒子只能放一个水果,问如何安排能使的放在盒子里的水果最多。 怎么写?暴力,可以试试。但不管是暴力还是什么算法,都需要面对一个情况——后面的水果如果没盒子放
阅读全文