摘要: 状态压缩DP 思想简述:DP的实质是在状态空间中的遍历,在部分题目中,DP在状态空间的轮廓需要我们很清晰的刻画出来,所以我们在DP过程中需要维护一个集合,来保存这个轮廓的详细信息。如果这个集合大小不超过$N$,并且都不超过$K$,我们就可以用一个$N$位$K$进制数来保存这个集合,用一个$[0,N^ 阅读全文
posted @ 2022-11-30 22:35 spdarkle 阅读(178) 评论(0) 推荐(0)
摘要: 环形与后效性处理 环形处理: 即我们需要在一个环上进行DP 这种问题一般有两种处理方法 1.执行2次DP,在第一次DP时将问题随便找个点断开当成线性问题处理,第二次DP的时候通过对DP初始值的适当赋值,以及方程式及转移做出些许更改,保证计算出的代价等于把断开的点强制连上 2.将环断开,再复制一倍在末 阅读全文
posted @ 2022-11-30 22:35 spdarkle 阅读(360) 评论(0) 推荐(3)
摘要: 倍增优化DP 在线性DP中,我们一般是按照阶段将DP的状态线性增长,但是我们可以运用倍增思想,将线性增长转化为成倍增长 对于应用倍增优化DP,一般分为两个步骤 1.预处理 ,我们使用成倍增长的DP计算出与二的整次幂有关的代表状态 2.拼凑,根据二进制划分的思想,使用预处理出的状态拼凑出最后的答案(注 阅读全文
posted @ 2022-11-30 22:34 spdarkle 阅读(112) 评论(0) 推荐(0)
摘要: 常见DP类型 第一节:线性DP 思想:DP是作用在线性空间上的递推——DP的阶段按照各个维度线性的增长,从一个或多个边界点开始有方向的向整个状态空间转移扩展,最后在每个状态上保留的以自身为目标问题的最优解 简单的说,DP是不断划分自己的子问题(满足能从小问题推出大问题的答案),从最小的子问题开始一步 阅读全文
posted @ 2022-11-30 22:34 spdarkle 阅读(250) 评论(0) 推荐(0)
摘要: 可持久化数据结构 可持久化Trie 思想概述 可持久化数据结构,是一种对原本数据结构进行的扩展,可以支持查询以前的历史版本的信息 在进行每一次操作的时候,我们都把需要更新的信息的节点全部创建一个新版本,起到节省空间的效果 关于这个算法的思想,就不多说了,书上有,给张照片就是 综合运用 众所周知,Ti 阅读全文
posted @ 2022-11-30 22:33 spdarkle 阅读(107) 评论(0) 推荐(0)
摘要: 整体二分 思想概述 整体二分算法,全称为基于值域的分治算法,它的思想是这样的: 在某些题目中,我们需要处理很多个询问,而每一个询问都需要二分答案,且$check$函数类似,在我们进行每一次二分答案的时候,$check$函数返回的信息很有可能会被浪费掉,而整体二分就是来解决这个问题的 详细的说,整体二 阅读全文
posted @ 2022-11-30 22:32 spdarkle 阅读(266) 评论(0) 推荐(0)
摘要: CDQ 思想概述-基于离线的分治算法 首先明确几个概念: 动态问题:即带有修改操作的问题 静态问题:即无修改操作的问题 当一个问题是动态问题并且并不强制在线的,我们可以进行离线操作——对问题的某一维度进行分治 一般来说,CDQ分治分为三步 统计分治的前段区间$[l,mid]$的修改操作对$[mid+ 阅读全文
posted @ 2022-11-30 22:31 spdarkle 阅读(361) 评论(0) 推荐(2)
摘要: 点分治 在以前,我们做的都是在序列上的分治问题,现在我们研究一类用于树上静态路径统计的分治算法——点分治(动态需要扩展-点分树) 其核心思想是在树上进行分治 例题:TREE 给定一个有 N 个点(编号 0,1,…,N−1)的树,每条边都有一个权值(不超过 1000)。 树上两个节点 x 与 y 之间 阅读全文
posted @ 2022-11-30 22:30 spdarkle 阅读(119) 评论(0) 推荐(1)
摘要: Splay Splay基本操作 Splay是一类二叉查找树,与其他平衡树相比,也是运用旋转保证复杂度 其最重要的操作便是$rotate$ $and$ $spaly$了 先来谈旋转,我们都知道,旋转是这样的 仔细观察后,我们会发现,旋转操作可以拆解为三步,设$x$是$y$的父亲,$k$表示$y$是$x 阅读全文
posted @ 2022-11-30 22:29 spdarkle 阅读(88) 评论(0) 推荐(0)
摘要: 分块 望月悲叹的最初分块 分块,优雅的暴力 分块也是同线段树等结构一样,维护区间操作的,不同于线段树和树状数组的是,分块所维护的信息并不需要满足区间可加性,以此,分块可以处理许多线段树等结构不可以处理的问题 简单来说,分块就是将整个序列分为若干个大小相同的块(最后一个可能不同),然后对于每一个块再加 阅读全文
posted @ 2022-11-30 22:29 spdarkle 阅读(116) 评论(0) 推荐(0)