摘要: 第一节——最短路问题 基本概念:由于无向边可以看作两条相反的有向边,于是我们默然按照有向边的形式讨论 存图方式: 邻接矩阵:空间复杂度$O(n^2)$,优点:$O(1)$查找$x->y$的边是否存在,方便 scanf("%d%d%d",&u,&v,&w); a[u][v]=w;//邻接矩阵 邻接表: 阅读全文
posted @ 2022-11-30 22:37 spdarkle 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 数位统计DP 数位统计DP是一种有关数字的限制问题,一般问题形式类似于给定若干限制条件,求满足条件的第K小的数是多少,或者是询问区间$[L,R]$内有多少满足要求的数字,对于这种类型的题,我们一般是先使用动态规划进行预处理,再运用类似与倍增优化DP的拼凑思想拼出最后的答案,亦或者是试填法 在这类题中 阅读全文
posted @ 2022-11-30 22:36 spdarkle 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 计数DP 顾名思义,这是对于方案统计的DP类型 需要记住的公式: 在平面直角坐标系中,从点$(x_1,y_1)$走到$(x_2,y_2)$,$(x_1<x_2,y_1,<y_2),$每一步只能使得$x_1+1$或者是$y_1+1$,求合法路径的条数为: $$C_{x_2-x_1+y_2-x_1}^{ 阅读全文
posted @ 2022-11-30 22:36 spdarkle 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 状态压缩DP 思想简述:DP的实质是在状态空间中的遍历,在部分题目中,DP在状态空间的轮廓需要我们很清晰的刻画出来,所以我们在DP过程中需要维护一个集合,来保存这个轮廓的详细信息。如果这个集合大小不超过$N$,并且都不超过$K$,我们就可以用一个$N$位$K$进制数来保存这个集合,用一个$[0,N^ 阅读全文
posted @ 2022-11-30 22:35 spdarkle 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 环形与后效性处理 环形处理: 即我们需要在一个环上进行DP 这种问题一般有两种处理方法 1.执行2次DP,在第一次DP时将问题随便找个点断开当成线性问题处理,第二次DP的时候通过对DP初始值的适当赋值,以及方程式及转移做出些许更改,保证计算出的代价等于把断开的点强制连上 2.将环断开,再复制一倍在末 阅读全文
posted @ 2022-11-30 22:35 spdarkle 阅读(193) 评论(0) 推荐(1) 编辑
摘要: 倍增优化DP 在线性DP中,我们一般是按照阶段将DP的状态线性增长,但是我们可以运用倍增思想,将线性增长转化为成倍增长 对于应用倍增优化DP,一般分为两个步骤 1.预处理 ,我们使用成倍增长的DP计算出与二的整次幂有关的代表状态 2.拼凑,根据二进制划分的思想,使用预处理出的状态拼凑出最后的答案(注 阅读全文
posted @ 2022-11-30 22:34 spdarkle 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 常见DP类型 第一节:线性DP 思想:DP是作用在线性空间上的递推——DP的阶段按照各个维度线性的增长,从一个或多个边界点开始有方向的向整个状态空间转移扩展,最后在每个状态上保留的以自身为目标问题的最优解 简单的说,DP是不断划分自己的子问题(满足能从小问题推出大问题的答案),从最小的子问题开始一步 阅读全文
posted @ 2022-11-30 22:34 spdarkle 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 可持久化数据结构 可持久化Trie 思想概述 可持久化数据结构,是一种对原本数据结构进行的扩展,可以支持查询以前的历史版本的信息 在进行每一次操作的时候,我们都把需要更新的信息的节点全部创建一个新版本,起到节省空间的效果 关于这个算法的思想,就不多说了,书上有,给张照片就是 综合运用 众所周知,Ti 阅读全文
posted @ 2022-11-30 22:33 spdarkle 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 整体二分 思想概述 整体二分算法,全称为基于值域的分治算法,它的思想是这样的: 在某些题目中,我们需要处理很多个询问,而每一个询问都需要二分答案,且$check$函数类似,在我们进行每一次二分答案的时候,$check$函数返回的信息很有可能会被浪费掉,而整体二分就是来解决这个问题的 详细的说,整体二 阅读全文
posted @ 2022-11-30 22:32 spdarkle 阅读(193) 评论(0) 推荐(0) 编辑
摘要: CDQ 思想概述-基于离线的分治算法 首先明确几个概念: 动态问题:即带有修改操作的问题 静态问题:即无修改操作的问题 当一个问题是动态问题并且并不强制在线的,我们可以进行离线操作——对问题的某一维度进行分治 一般来说,CDQ分治分为三步 统计分治的前段区间$[l,mid]$的修改操作对$[mid+ 阅读全文
posted @ 2022-11-30 22:31 spdarkle 阅读(264) 评论(0) 推荐(2) 编辑