自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 贪心问题

本质上是一个货仓选址问题。

2024-03-19 13:17:45 348

原创 双指针、bfs与图论

【代码】双指针、bfs与图论。

2024-03-16 22:27:51 529

原创 枚举、模拟与排序

【代码】枚举、模拟与排序。

2024-03-12 23:23:24 373

原创 数学与简单dp

【代码】数学与简单dp。

2024-03-11 22:05:31 359

原创 二分与前缀和

【代码】二分与前缀和。

2024-03-09 23:55:25 382

原创 差分约束

源点需满足的条件:从源点出发,一定可以到达所有的边求最短路:1.先将每个不等式xi<=xj + ck,转化成一条从xj走到xi,长度为ck的一条边2.找一个超级源点,使得该源点一定可以遍历到所有的边3.从该源点求一遍单源最短路结果1:如果存在负环,则原不等式一定无解结果2:如果没有负环,则dist[i]就是原不等式组的一个可行解问题:如何转化xi<=c,其中c是一个常数,这类的不等式方法:建立一个超级源点0,然后建立一条0->i,长度为c的边。

2024-03-09 14:31:22 379

原创 递归与递推

限制:从小到大排序(局部限制),保证每次加的数都比前一个数大。

2024-03-08 20:14:51 328

原创 SPFA找负环

2.统计当前每个点的最短路中包含的边数,如果某个点的最短路的所包含的边数大于等于 n,则说明也存在环。01分数规划:二分 -> 整理不等式 -> 重新定义边权 -> 判断图中是否存在正环。1.统计每个点入队的次数,如果有个点入队n次,则说明存在负环。当所有点的入队次数大于2n时,我们就认为图中有。

2024-03-08 16:00:56 352

原创 最小生成树的扩展应用

定义:给一个带权的图,把图的所有生成树按权值从小到大排序,第二小的称为次小生成树(有些题目最小生成树不唯一,次小生成树可以和最小生成树相等)找到一个最小的d值,将所有权值大于d的边删去,整个图形连通块的数量不超过k条。

2024-03-07 17:37:42 365

原创 最小生成树的典型应用

假设不选当前边,得到了一棵树,然后将这条边加上,那么必然会出现一个环,在这个环上,一定可以找出一条不小于当前边的边,那么把当前边替换上去,结果一定不会变差。

2024-03-06 22:47:18 410

原创 单源最短路的扩展应用

从每个起点出发,到达终点的所有路线长度的最小值:从虚拟远点出发,到达终点的所有路线的最小值(虚拟远点,思路一样)

2024-03-04 20:57:38 379

原创 单源最短路的综合应用

单源最短路和二分的结合。本质上是求最大值最小,联想到二分法来求。从1到n,最少经过的长度大于x的边的数量是否小于等于k。dp问题绝大部分上是拓扑图上的最短(最长)路径问题。单源最短路和暴搜的结合。

2024-03-03 17:04:28 374

原创 单源最短路的建图方式

这道题可以有三种方法来做,朴素版的dijkstra、堆优化版的dijkstra和spfa算法。

2024-03-02 16:39:04 352

原创 DFS之迭代加深、双向DFS、IDA*

剪枝1:优先枚举较大的数剪枝2:排除等效冗余。

2024-03-01 16:41:40 386

原创 DFS之剪枝与优化

1.优化搜索顺序:在大部分情况下,我们应该优先搜索分支较少的结点2.排除等效冗余(在不考虑顺序的情况下,尽量用组合的方式来搜索)3.可行性剪枝4.最优性剪枝5.记忆化搜索可以用一个九位的二进制数来表示一行的状态。

2024-02-29 18:36:23 786

原创 DFS中的连通性和搜索顺序

宽搜一般要手写一个队列,深搜一般是用系统栈来实现的。

2024-02-28 23:34:30 427

原创 BFS中的双向广搜和A-star

如果给出的字母序列中逆序对的数量是偶数,那么就有解,如果是奇数,就没有解。(这对于所有奇数码都是成立的,即n为奇数,例如十五数码)这里的估价函数是每个点到终点的最短距离,那么也就是说可用Dijsktra算法反向求一下终点到各个点的最短距离。3.A*算法除了终点之外,并不能保证其他点第一次出队时是最优解,也不能保证每个点只被扩展一次。这道题的估计函数就是:当前状态到它的目标状态的曼哈顿距离之和。1.A*算法一定要在保证有解的条件下用。这个代码超时了,但是还没找到问题在哪里,下次再看看吧。

2024-02-27 22:10:45 499

原创 BFS中的多源BFS-双端队列BFS

这里由于起点(0,0)的横纵坐标是偶数,因为走的是斜线,所以到达的点也一定是偶数。求出每个位置到所有为1的点的最短距离。

2024-02-26 16:04:33 355

原创 BFS中的Flood Fill和最短路模型

BFS:1、“求最小” 用bfs第一次搜到的值就是最小值2、基迭代,不会爆栈。

2024-02-25 23:50:16 350

原创 2024-02-21(单调队列优化的dp问题)

表示以A[k]结尾的长度不超过m的子序列,就是S(k) - S(k - j),那么当S(k)是确定了的时候,我们要找一个最小的S(k - j),问题就转化为了在m区间内找到一个最小值,就可以用单调队列来求解了。每个点的油量减去前一个点的距离算出每个点的前缀和,也就是说判断最小的前缀和是否为0,那么问题就转化为求区间n的最小值问题,用单调队列求解。

2024-02-22 01:03:44 394

原创 2024-02-20(数位DP)

还是不会。。。其实就是把一个数n转化成B进制的数x,例如x = 654321,那么我们要找的就是在小于x的数里面,在它们的各个位置上填0和1,满足K个1,其他数都是0。

2024-02-20 15:45:07 336

原创 2024-02-19(树形DP)

树形dp的一道题。

2024-02-19 19:29:06 376

原创 2024-02-18(区间DP)

加add() 减subtract() 乘multiply() 除divide() 两者取最小min() 两者取最大max()先把环形展开,形成一条链,再复制一遍。其中状态划分的依据就是哪个点是根节点。

2024-02-18 23:11:23 371 1

原创 2024-02-17、18(状态压缩dp)

与前两题不同的是,这道题求的不是方案数,而是最大值,也就是说把所有子集的最大值与当前行的最大值相加就可以了。另外,由于攻击范围如图所示,所以在枚举的时候,要枚举到 i -2 行。暴力搜索:用某种顺序来枚举到所有的方案。两个状态压缩dp的题目。

2024-02-18 14:37:56 355 1

原创 2024-02-17(状态机模型)

这道题与前面两道题不同的是,这道题有三个状态。前面两道题只有两个状态。

2024-02-17 15:57:07 359 1

原创 2024-02-12(背包模型)

1、当空间优化成一维之后,只有完全背包问题的体积是从小到大循环的。2、循环形式:for 物品for 体积for 决策。

2024-02-16 23:12:47 1426 1

原创 2024-02-11 ~ 2024-02-12(最长上升子序列模型)

这道题和最长上升子序列的基本模型的一点区别就是:它要考虑最长上升子序列和最长下降子序列。对于每个数都有两种选择:1.接在某个现有的子序列的后面 2.创建一个新的系统。情况一:现有子序列的结尾数都小于当前数,则创建一个新的子序列。情况二:将当前数放到结尾数大于等于它的最小的子序列的后面。唯一的区别就是要求算出子序列以外的部分,本质上和登山是一样的。条件一:按照编号递增的顺序来浏览(也就是说必须是子序列)要想使得系统的数量最小,那么子序列结尾的数就要尽可能大。目标:求最多能浏览多少景点?这个转化的过程很重要!

2024-02-12 21:58:05 356 1

原创 2024-02-10(动态规划-数字三角形模型)

由于题目限制了商人必须在2n - 1的时间内走出去,也就是不走回头路,就是说只能往右走或者往下走,其实本质上和摘花生这个题是一样的。题目中要求从左上到右下,和右下到左上,其实都可以看作是。然后再考虑一下边界情况就可以了。只有在步数一样的时候才有可能踩到相同的格子。题目本质上和方格取数是一样的,只是矩阵不一样。

2024-02-11 01:31:18 361 1

原创 2024-02-08(贪心:排序不等式、绝对值不等式、推公式)

按照wi+si的顺序从小到大排,最大危险系数一定是最小的。

2024-02-08 21:31:45 302

原创 2024-02-08(贪心算法:区间问题、哈夫曼树)

2.从前往后依次枚举每个区间,在所有能覆盖start的区间中,选择右端点最长的,并将start更新为右端点的最大值。2.从前往后依次枚举每个区间,如果当前区间中已经包含点,则直接pass,否则,选择当前区间的右端点。2.从前往后依次枚举每个区间,如果当前区间中已经包含点,则直接pass,否则,选择当前区间的右端点。2.从前往后处理每个区间,判断能否将其放到某个现有的组中(L[i] > Max_r)如果存在这样的组,将其放进去,并更新当前组的Max_r。如果不存在这样的组,则开新组,将其放进去。

2024-02-08 16:46:09 318

原创 2024-02-07(计数类DP、状态压缩DP、树形 DP、记忆化搜索)

上一篇文章里面的dp题目求的都是最大值或者最小值,但是这一道题求的是个数。根据题意,可以看成1-n个数装满容量为n的背包,而且每个数可以用无限次,所以可以联想到完全背包问题,用来做。

2024-02-08 00:57:57 357

原创 2024-02-06(线性DP、区间DP)

与上一题相比,不同之处在于这道题的数据范围比较大。和上一道的的思路一样,有一点变动。

2024-02-06 16:47:56 366 1

原创 2024-02-05(背包问题)

【代码】2024-02-04(背包问题)

2024-02-05 18:18:24 348 1

原创 2024-02-04(容斥原理、博弈论)

sg函数的重要定理 求两堆数的sg(i,j) = sg(i) ^ sg(j);

2024-02-04 20:20:36 368

原创 2024-02-03(高斯消元,求组合数)

还有就是质数才能用快速幂求逆元,非质数要用扩展欧几里得算法来求。

2024-02-04 01:34:48 308 1

原创 2024-02-03(欧拉函数,快速幂,扩展欧几里得算法,中国剩余定理)

欧拉函数:1~n中与n互质的数的个数互质:两个数的公约数只有1。

2024-02-03 11:36:47 453 1

原创 2024-02-02(数论-质数、约数)

在大于1的整数中,如果只包含1和它本身这两个约数,就称为质数或者素数。

2024-02-02 14:05:24 414

原创 2024-02-01(最小生成树,二分图)

对应的图都为无向图。

2024-02-01 16:46:41 366 1

原创 2024-01-31(最短路径)

上面两道题的n,m的数据范围不一样,因此数据存储方式也不一样,所用的Dijkstra算法也不一样。朴素的Dijkstra算法和堆优化的主要区别就是 找不在st中距离起始点最近的点。是限制最小的算法,一般来说,只要没有负环,都可以用SPFA算法。2.而堆优化的利用优先队列可以直接得到最近的点。稠密图要用邻接矩阵来存储,稀疏图用邻接表来存储。1.朴素的要用for循环遍历。

2024-01-31 23:19:16 358

原创 2024-01-30(树与图的深度优先遍历、广度优先遍历、拓扑排序)

拓扑排序 (是针对有向图来说的,无向图没有拓扑排序)

2024-01-31 00:46:37 355

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除