自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划—— 背包问题 解题记录

那么在全集被渐渐覆盖的过程中,让这个体积只剩下余数,那么余数反过来慢慢往最开始的体积来加的话,在考虑的集合元素达到某一个数量 (题目中的物品数量s) 的时候,就可以开始得到其中的最大值,同时在不断更新集合中数据的过程中,把已经不符合条件的 (体积最小的元素) 退出,这就符合一个单调队列模型,就可以简单的对每一个数据是 m/v 的复杂度来处理 (v大小可省略为1),所以总的时间复杂度就是O(n*m) 的。同样的,分组背包只需要考虑不选和选哪个的问题,通过将01背包扩展,循环选哪个最优,三重循环结束战斗。

2024-03-21 13:36:27 915

原创 动态规划—— 最长上升子序列模型 解题记录

注意到我们在状态计算的时候,求的来的 b[1~j] 的最大值是前缀最大值,在往后计算时会重复计算,也即最大值会在计算 b[1] 开始向后传递,同时 只有当这个数已经小于我们现在正在看的 a[i] 时才能加入计算前缀最大值的行列中,所以我们开一个值 maxv ,当 a[i]>b[j] 时就记录这样的前缀最大值即可。第一问就是最长上升子序列。本题使用公共子序列的状态表示, f[i][j] 表示 a 的前 i 个元素中和 b 的前 j 个元素中,以b[j] 为结尾的方案,存的是方案中的上升子序列的长度的最大值。

2024-03-15 08:40:48 948 1

原创 动态规划——数字三角形模型 解题记录

最开始的思路是用四个值记录两条路线的坐标,即 f[x1][y1][x2][y2] 来记录全流程,随后处理冲突,也即只有当 x1==x2 && y1==y2 时,可能发生冲突,此时转移方程加上的权值只能加一次,否则就按各自的算,排列组合有四种情况。现在是2024-3-13 07:28:37,之前用另外一个号写的居然发不出来,还是搁这个号上发,然后做好备份吧。模型的同名原题,使用斜线作为坐标系,就可以简单的把状态转移方程写出来,显然是记录最大和,那么通过转移的来源找到转移源的最大值,就可以简单的得出结果。

2024-03-13 07:58:04 352

原创 2023/7/24

其中0号格子是起点,1号格子是终点,我们只能选则一个方向走a步或b步(a,b均为整数),所以根据a和b的值不同,我们有可能永远无法到达终点。有时候我们需要矩阵快速幂来加快运算,比如在计算斐波那契数列的时候,就可以通过矩阵的形式表达斐波那契数列,再用快速幂来加速运算,原理相同,只是将数改为矩阵,同时需要定义矩阵乘法。,由于后者的a%b总是不断减小的,直至为0,所以当a%b=0时,gcd(a,b)=gcd(c,0),此时a和b的最大公约数就是c,其复杂度在。防止高次幂爆内存,优化幂运算,都应使用快速幂。

2023-07-24 19:00:59 37

空空如也

空空如也

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

TA关注的人

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