代码代码快快显灵
这个作者很懒,什么都没留下…
展开
-
01背包问题
(3)为什么一维情况下枚举背包容量需要逆序?在二维情况下,状态f[i][j]是由上一轮i - 1的状态得来的,f[i][j]与f[i - 1][j]是独立的。而优化到一维后,如果我们还是正序,则有f[较小体积]更新到f[较大体积],为什么可以这样优化成一维的呢?我们定义的状态f[i][j]可以求得任意合法的i与j最优解,但题目只需要求得最终状态f[n][m],因此我们只需要一维的空间来更新状态。(1)状态f[j]定义:N 件物品,背包容量j下的最优解。(2)注意枚举背包容量j必须从V开始。原创 2024-08-30 10:23:11 · 672 阅读 · 0 评论 -
算法-容斥原理
容斥定理求的基本知识以及应用:能被整除的数原创 2024-08-27 12:25:07 · 745 阅读 · 0 评论 -
迪杰斯特拉算法——求最短路径
迪杰斯特拉算法采用的是一种的策略。用一个 dist 数组保存源点到其余各个节点的距离,dist[i] 表示源点到节点 i 的距离。初始时,dist 数组的各个元素为无穷大。源点到源点的距离为 0。即dist[1] = 0。用一个状态数组 st记录是否找到了源点到该节点的最短距离,st[i] 如果为真,则表示找到了源点到节点 i 的最短距离,st[i] 如果为假,则表示源点到节点 i 的最短距离还没有找到。初始时,st各个元素为假。。假设该节点编号为 t。迪杰特斯拉的扩展以及堆优化版的详细介绍原创 2024-09-03 11:17:56 · 1180 阅读 · 0 评论 -
高精度加法,减法,乘法,除法
把个位放在数下标为0的位置,十位放在数组下标为1的位置(也就是高位放在数组的后面)因为这样,如果需要增加一位最高位,那我们就可以直接在vector数组的最后push_back最高位到结果数组即可。如果数组低位存的是数的高位,那么我们进行这个操作的时候就需要往后一个一个移动数组,效率很慢。高精度加法,减法,乘法,除法原创 2024-09-07 09:35:50 · 1474 阅读 · 0 评论 -
背包问题——分组背包
背包问题——分组背包。原创 2024-08-31 07:44:44 · 344 阅读 · 0 评论 -
背包问题——完全背包
完全背包和01背包的比较以及通俗易懂的基本知识原创 2024-08-30 11:20:53 · 284 阅读 · 0 评论 -
数论之组合数
类似于dp,从a个苹果里面选b个出来:首先从a个苹果里面拿出来一个,这样就分成了两种,一种是包括这个拿出来的苹果的方案数,此时就只需要拿b-1个苹果。一种是不包括这种苹果的方案数。原创 2024-08-25 21:23:46 · 315 阅读 · 0 评论 -
扩展——双向搜索
传统的搜索算法(如广度优先搜索 BFS、深度优先搜索 DFS)通常从起点开始,逐步扩展搜索到目标节点。搜索的时间复杂度与图的大小和结构有关。:双向搜索则同时从起点和终点进行搜索,两个搜索分别扩展,直到在中间相遇。因为每次搜索的深度都减少了一半。原创 2024-08-30 09:07:07 · 947 阅读 · 0 评论 -
动态规划——线性dp
动态规划——线性dp。数字三角形,最长上升子序列,最长公共子序列,最短编辑距离,编辑距离原创 2024-09-01 09:36:06 · 220 阅读 · 0 评论 -
博弈论(Nim游戏的扩展)
若一个游戏满足:1.由两名玩家交替行动;2.在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关;3.不能行动的玩家判负;则称该游戏为一个公平组合游戏。NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。原创 2024-08-27 17:30:16 · 857 阅读 · 0 评论 -
多重背包问题
为非负整数),这样可以用较少的物品来表示原始物品的所有可能数量。的核心思想是将每个物品的数量。假设有一个物品,其数量限制为。原创 2024-08-31 07:26:04 · 195 阅读 · 0 评论 -
字符串前缀哈希法
字符串前缀哈希法通俗易懂原创 2024-08-29 09:30:45 · 1244 阅读 · 0 评论 -
求最长上升子序列总结
动态规划是求解 LIS 问题的经典方法原创 2024-08-26 11:13:05 · 664 阅读 · 0 评论 -
区间dp——石子合并
区间dp——石子合并原创 2024-09-02 08:26:28 · 424 阅读 · 0 评论 -
数论之质数以及约数
在大于1的整数(不包含1)中,如果只包含1和本身这两个约数,就被成为质数,或者叫素数。原创 2024-08-21 21:28:40 · 1161 阅读 · 0 评论 -
算法基础之滑动窗口
滑动窗口算法是一种常用于解决数组相关问题的技术,特别适用于需要处理连续数据块的情况。其基本思想是创建一个窗口,这个窗口可以是数组或列表的一个子集,随着算法的进行,这个窗口会在整个数据结构上从开始滑动到结束。这种方法可以帮助我们在保持效率的同时解决一系列问题,如计算最大值最小值、查找满足特定条件的子数组等。我觉得滑动窗口可以分为很多种类型,现在我只遇到过两种,以后遇到了在更新。原创 2024-05-28 22:41:29 · 515 阅读 · 1 评论 -
数据结构之队列及优先队列
队列在外面生活中很常见,例如排队结账,付款等。那么我们不难发现,队列存在一种特性,就是先进先出(FIFO)。原创 2024-05-22 22:41:43 · 468 阅读 · 1 评论 -
数据结构之并查集
路径压缩是指在执行查找操作的时候,让集合中的每个元素都直接指向根节点,这样可以减少时间复杂度。以下代码实现的是递归来找到某个元素的根节点// 递归查找根节点,同时实现路径压缩// 如果pre[x]不是自己,说明还没有找到根节点练习题.蓝桥幼儿园 - 蓝桥云课 (lanqiao.cn)原创 2024-05-20 18:11:22 · 2133 阅读 · 1 评论 -
数论之高斯消元
枚举每一列c找到绝对值最大的一行将该行换到最上面(第r行)将该行的第c列数字变为1把该行下面的第c列数字全部变为0代回求解。原创 2024-08-23 17:54:32 · 832 阅读 · 0 评论 -
算法基础之二分及二分答案
当l=r - 1的时候,如果mid =(l+r)/2,此时mid = l,如果check是true,那就将l = mid = l ,那么就会进入死循环(l < r,while循环无法结束)当mid=(l+r+1)/2,此时,mid = r,如果check为true,l = mid = r,此时while循环结束。不能包含mid,mid在右半部分,肯定不符合性质,所以要从r-1开始查找边界。二分答案和整数二分的不同:二分答案枚举的是答案,整数枚举枚举的是下标。二分的本质并不是单调性,二分的本质是边界。原创 2024-05-19 15:31:41 · 1574 阅读 · 2 评论 -
优先队列的注意点及题目
感想:这道题目没有太多技术含量,只需要用一个优先队列每一次维护一个结构体,结构体的成员分别是价格和数量。但是对于初学者的我,有很多可以注意的地方。结构体对象包含多个成员变量,且这些变量在创建对象时需要立即被初始化为特定值时,带参数的构造函数非常有用。这道题目我首先在结构体内定义了带有参数的构造函数。如果我在结构体内定义了带有参数的构造函数,那么我将不能声明一个结构体的数组。如果结构不含带参数的构造函数,那么就简单一点了,结构体代码如下。那么我们可以在某些情况下省略带参数的构造函数,什么时候需要呢?原创 2024-05-23 10:06:57 · 349 阅读 · 5 评论 -
二分练习题
二分练习题目-CSDN博客。原创 2024-05-19 15:32:47 · 240 阅读 · 1 评论 -
欧拉函数和快速幂
互质:互质是公约数只有1的两个整数,叫做互质整数。欧拉函数:欧拉函数,即 表示的是小于等于n并且和n互质的数的个数。比如说 φ(1) = 1。1.从1~n中去掉p1,p2....pk的倍数(此时可能存在多去的情况,例如一个数既是p1的倍数又是p2的倍数)2.加上所有pi*pj的倍数(此时如果一个数既是p1,p2的倍数又是p3的倍数,此时加三次减三次,没有变化但我们需要去除)3.减去所有pi*pj*pk4.加上pi*pj*pk*pd....依次类推合并得到。原创 2024-08-22 20:14:59 · 508 阅读 · 0 评论 -
二分答案练习题
P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)对于本道题目,我们考虑用二分答案来枚举锯片的最高高度因为我们不难发现,随着锯片高度的升高,我们所得到的木头的材料是减少的,它们之间存在随着锯片高度升高,得到的木材材料递减的关系。满足单调性,这个时候,我们就可以考虑用二分答案来枚举答案的正确性。原创 2024-05-19 16:15:12 · 337 阅读 · 1 评论 -
并查集练习题
数据结构之并查集-CSDN博客。原创 2024-05-20 21:45:14 · 672 阅读 · 1 评论 -
扩展欧几里得算法
对于任意正整数a,b,一定存在非零整数x,y,使得。,其中,(a,b)是为最大公约数的倍数。原创 2024-08-23 09:40:29 · 206 阅读 · 0 评论