随笔分类 - 算法学习
摘要:可持久化数组支持单点修改和单点查询。(单点修改和单点查询这种东西不是直接数组就能解决了吗?干嘛要可持久化?)因为要用到历史版本啊!
阅读全文
摘要:一直听说$AC$自动机是一个很难很难的算法,而且它不在$NOIP$提高组范围内(这才是关键),所以我一直没去学。最近被一些字符串题坑得太惨,于是下定决心去学$AC$自动机。
阅读全文
摘要:差分约束系统应该是一个比较有用的算法。它建立在图的思想上,常与最短(长)路算法一起出现。
阅读全文
摘要:二分图匹配的问题应该是比较常见的吧,匈牙利算法就可以在O(nm)的时间复杂度内解决这类问题。
阅读全文
摘要:莫队算法,是一个十分优雅的暴。普通的莫队可以轻松解决一些离线问题,但是,当遇上了一些有修改操作的问题,普通莫队就无能为力了。于是,改进后的莫队——带修莫队就这样产生了。
阅读全文
摘要:在学习莫队算法之前,我一直以为这是一个很高深的算法。(实际上,它就是一个很高深的算法)这个算法玄学地将分块与暴力两大算法实现了二合一,从而打造出了一个时间复杂度为$O(N\sqrt N)$的求解多个区间询问的离线算法。
阅读全文
摘要:求割点和割边建立在$Tarjan$算法的基础之上,因此建议在看这篇博客之前先去学一学$Tarjan$。
阅读全文
摘要:$Tarjan$是一个著名的将强连通分量缩点的算法。它的大致思路就是在图上每个联通块中任意选一个点开始进行$Tarjan$操作。
阅读全文
摘要:网络流这个算法我一直都很想学,但是一直都没能学会,最近又花了一些时间去理解了一遍,才总算勉强弄懂了如何用$Dinic$算法去求最大流。
阅读全文
摘要:扫描线应该是一个很有用的算法。它有许多用途,比较经典的应该就是用来求矩形面积并。
阅读全文
摘要:在一些复杂的博弈论题目中,每一轮操作都可能有许多决策,于是就会形成一棵庞大的博弈树。而有一些博弈论题没有什么规律,针对这样的问题,我们就需要用一些十分玄学的算法。例如对抗搜索。
阅读全文
摘要:看到那种给你两个数,让你求这两个数之间符合条件的数的个数,且这两个数非常大,这样的题目一般就是数位$DP$题。数位$DP$一般都用于计数。
阅读全文
摘要:树形$DP$,顾名思义,就是在树上操作的$DP$,一般可以用$f_i$表示以编号为$i$的节点为根的子树中的最优解。转移的时候一般都将信息由子节点转移到父亲节点,也就是将信息从下往上转移。因此,一般树形$DP$都会采用递归的形式。
阅读全文
摘要:状压$DP$应该是一个比较玄学的东西。由于它的时间复杂度是指数级的(但也足以吊锤$DFS$),所以状压$DP$题的数据范围一般都巨小。
阅读全文
摘要:本篇文章主要讲述一些关于位运算的简单变换操作。
阅读全文
摘要:位运算,是程序设计的一个重要领域,将数字转化为二进制之后再按位进行运算,效率高,是编程的一个重点知识。
阅读全文
摘要:$Manacher$算法,又称马拉车算法,是解决回文问题的利器,在字符串题中也非常常用。最重要的是,它是个简单易懂的算法。
阅读全文
摘要:在我的心目中,点分治是一个非常难的算法,但在解决一些树上问题时也非常实用。为此,我特地去学了学点分治这个高深的算法。
阅读全文
摘要:$WQS$二分听起来是个很难的算法,其实学起来也并不是那么难。
阅读全文
摘要:$KD-Tree$是一个十分神奇的东西,其实本质上类似于一个$K$维的二叉搜索树。
阅读全文

浙公网安备 33010602011771号