
数据结构
文章平均质量分 84
胡牧之.
此人很懒,但还添加了简介
展开
-
KMP讲解(自制动图)
Nextj=Next[j]NextNext[0,j−1]Next[j]Next。原创 2022-07-23 11:23:24 · 1722 阅读 · 1 评论 -
Stone Games(思维+可持久化线段树)
题目原题链接问题描述主要意思就是给定一个正整数砝码集合,问这堆砝码无法凑出的最小正整数。分析先分析出一个特例:当砝码集合中不存在111时,那么答案就是111。以[0,pre][0,pre][0,pre]表示当前集合可以凑出该区间内的所有数,当我们再加入一个数xxx时,相当于将这个区间整体右移,可以得到[x,pre+x][x,pre+x][x,pre+x],若两个区间存在重叠或相邻部分,则可以说明加入xxx到集合中后可以凑出[0,pre+x][0,pre+x][0,pre+x]内的所有数。我原创 2022-04-13 20:51:05 · 587 阅读 · 0 评论 -
树状数组小结
文章目录前言一、树状数组的作用二、二进制拆分三、lowbit的使用四、基本使用1.单点修改(前缀和)2.区间查询(前缀和)3.区间修改(差分数组)4.单点查询(差分数组)5.区间查询+区间修改五、进阶使用1.求逆序对数2.区间求最值3.查询第K大/小的数4.二维树状数组前言对于一个数组,我们常见的操作为修改和查询,那么对于一个长度为N的数组来说,我们查询和修改一个点的时间复杂度为O(1),而对于修改并查询一个区间的复杂度则为O(N),如果对于区间的操作远多于对单点的操作,那么我们就引入了差分数组与前原创 2021-05-04 23:08:42 · 750 阅读 · 0 评论 -
【模板】智乃酱的静态数组维护问题多项式(多次差分数组——多项式处理)
题目原题链接问题描述思路差分数组的优点在于牵一发而动全身,通过处理一个位置便可以将后续位置的值都改变。我们此时面临的操作是对区间处理,而且处理不是简单的加上某个值,而是对位于[l,r][l,r][l,r]中的a[i]a[i]a[i]加上f(i)f(i)f(i),f(i)f(i)f(i)是一个最高阶数不超过555的多项式。1.引入在题目小W的糖果中,需要处理平方差分数组,也就是对于位置lll以及其右侧的每个位置需要加上i2i^2i2,其实这也是一个特殊的多项式,我们通过进行333次差分:原创 2022-02-25 16:06:47 · 642 阅读 · 0 评论 -
前缀和小结
文章目录一、前缀和的定义与优点二、前缀和与差分数组1.什么是差分数组2.差分数组的作用3.差分数组跟前缀和的联系三、一维前缀和1.静态区间求和2.区间整体修改3.应用四、二维前缀和1.静态矩形区间求和2.矩形区间整体处理3.应用一、前缀和的定义与优点对于 a0,a1, a2, a3, a4, a5, a6, …前缀和 Si = a0 + a1 + a2 + a3 + a4 +…+ ai这种处理不仅不影响我们求出原先数组中的每个元素,还会便利对的区间求和,原先如果要求一段区间的和,必须要对该区间原创 2021-04-10 09:46:34 · 1221 阅读 · 0 评论 -
牛牛的Link Power(二次前缀和,直接求解)
文章目录题目问题描述错误点1.二次前缀和(向后顾)代码2.直接求解(往前盼)代码题目原题链接问题描述错误点应当为:(a[i]+=a[i−1])%=mod(a[i]+=a[i-1])\%=mod(a[i]+=a[i−1])%=mod误写为:(a[i]+=a[i−1])%mod(a[i]+=a[i-1])\%mod(a[i]+=a[i−1])%mod意义不同???(待解决)1.二次前缀和(向后顾)对于序列[1,0,0,1,0,0,0,0,1][1,0,0,1,0,0,0,0,1][1.原创 2022-02-23 17:24:50 · 780 阅读 · 0 评论 -
【NOIP2013】积木大赛(差分数组,贪心模拟)
题目原题链接问题描述分析直观思路——贪心模拟:每次都处理最长正整数区段。以[2,3,4,1,2][2,3,4,1,2][2,3,4,1,2]为例:[2,3,4,1,2]⟹[1,2,3,0,1]⟹[0,1,2,0,1]⟹[0,0,1,0,1]⟹[0,0,0,0,1]⟹[0,0,0,0,0][2,3,4,1,2]\Longrightarrow [1,2,3,0,1]\Longrightarrow [0,1,2,0,1]\Longrightarrow [0,0,1,0,1]\Longrighta原创 2022-02-23 15:19:28 · 951 阅读 · 0 评论 -
两种常用建图方法(vector实现邻接表,链式前向星)
文章目录前言一、vector实现邻接表1.优点2.思路3.实现代码二、链式前向星1.优点2.思路3.实现代码前言介绍两种建图的方法:1.用vector实现的邻接表建图2.链式前向星(邻接表的数组实现)如果是一个稀疏图,在邻接矩阵中,会出现大量边的浪费,那么我们的思路是使用邻接表,但邻接表的实现方式也存在差异:1.链表实现2.vector实现3.链式前向星不同的实现方式在原理上存在一些差异,这里将介绍后两种方法,也是我们在做题时最常用的方法。一、vector实现邻接表1.优点原创 2021-05-19 20:07:32 · 4678 阅读 · 2 评论 -
数据结构——最小支撑树
文章目录前言一、Prim算法(由小树长成大树)(1)思路(2)代码实现二、kruskal算法(合木成林)(1)思路(2)代码实现前言树:同时满足极小连通图与极大无环图支撑树:能够覆盖图中每一个顶点的树最小支撑树:有权网络中满足各边权值之和最小的支撑树对于一幅图来说,存在的最小支撑树并不唯一。一、Prim算法(由小树长成大树)(1)思路最小支撑树总是会采用联结每一割的最短跨越边。用我的理解,就是不断拓展树的大小,用贪心思想,在目前的最小支撑树的邻接点中搜索与树相连的边的最小权值,并原创 2021-02-28 20:07:12 · 4819 阅读 · 0 评论 -
数据结构——最短路径问题
文章目录前言一、问题分类二、单源最短路径1.无权图(BFS)(1)问题分析(2) 路径记录2.有权图(DiskStra算法)(1)问题分析(2)算法介绍(3)代码实现三、多源最短路径1.问题分析2.枚举(1)思路3.Floyd算法(1)思路分析(2)代码实现前言两个顶点之间的最短路径问题就是求一条路径可以令两顶点沿途各边权值之和最小。一、问题分类对于这个问题,可以分为两种情况:1.单源最短路径:从固定起点出发,求最短路径;2.多源最短路径:求任意两顶点间最短路径。除此以外,在每种情.原创 2021-02-26 22:52:00 · 5740 阅读 · 1 评论