模板
Wolfycz
这个作者很懒,什么都没留下…
展开
-
算法模板——线段树
线段树作为高级数据结构,可以做非常非常多的事情,那么线段树到底是什么呢,我们就此了解下一.基本概念线段树并非什么特别高级的东西,顾名思义,它也就是一棵树。那么为什么叫线段树呢?因为树的节点上存的就是一些区间,也就是线段。那么它长啥样呢? 嗯,如上图,就是一个区间[1,9]的线段树。有些节点是叶子节点,叶子节点长度为1,不能继续往下分。叶子节点记录的信息是最基本的信息,而其他非叶子节点记录的就是原创 2017-12-07 21:54:03 · 664 阅读 · 0 评论 -
算法模板——线段树之Lazy标记
一.前言前面我们已经知道线段树能够进行单点修改和区间查询操作(基本线段树)。那么如果需要修改的是一个区间该怎么办呢?如果是暴力修改到叶子节点,复杂度即为O(n)O(n),显然是十分不优秀的。那么我们能不能向区间查询一样把复杂度降到O(logn)O(log_n)呢?二.算法流程线段树肯定是兹瓷O(logn)O(log_n)修改的,否则发明它有何用处?所以,我我们现在需要知道,如何快速进行原创 2017-12-09 00:23:21 · 1601 阅读 · 1 评论 -
算法模板——Manacher
字符串算法在各大高级比赛中均有用到,所以,学习好字符串算法对我们而言十分重要。那么,今天我们就给大家介绍一个快速求回文串的算法,Manacher算法,我们也习惯性叫它马拉车算法。一.引入首先我们要知道什么是回文串——当一个字符串它从右到左和从左到右读是一样的,我们就称它为回文串。考虑一下最暴力的算法,我们可以枚举字符串的每个子串,判断其是否为回文串,时间复杂度是O(n^3)。当然,我们可以加点优化,原创 2017-11-28 10:38:10 · 260 阅读 · 0 评论 -
算法模板——二分图匹配
一.引入二分图匹配算法是一个非常有用的算法,我们首先从一个简单的题目引入。给你n个水果,m个箱子,每个水果只能被放在指定的几个箱子里,每个盒子只能放一个水果,问如何安排能使的放在盒子里的水果最多。怎么写?暴力,可以试试。但不管是暴力还是什么算法,都需要面对一个情况——后面的水果如果没盒子放了,不能不管不顾,应该腾空间。对,腾。二分图算法的最重要思想就是腾二.算法流程二分...原创 2018-02-03 15:43:59 · 511 阅读 · 0 评论