算法
文章平均质量分 71
大学生数据结构与算法学习笔记
sky_lzr
这个作者很懒,什么都没留下…
展开
-
Ultra-QuickSort问题:递归、排序、双指针
第一个while运用双指针法,是对两个序列的合并,涉及到了元素位置的改变。第二、三个while是简单地将L1或L2中的剩余有序元素复制到arr队尾,并不涉及到元素位置的改变。交换相邻数字,关心的只是数字之间的相对位置,而不是绝对位置。现在来分析用双指针法合并两个有序序列时,与其(复杂度上)等效的交换相邻数字的方法是怎样实现的。L2[j]的“目的地”就是这个已组成的递增序列和L1[i]之间的位置。中更小的一个放在arr的k处,在两个指针逐渐变大的过程中,将合并后的递增序列覆盖在。是重点,也是本题关注的点。原创 2024-03-18 16:46:02 · 372 阅读 · 0 评论 -
算法好题积累——CF1764C 图+贪心
CF1764C,难度1400,图+贪心原创 2024-01-19 19:43:38 · 1011 阅读 · 1 评论 -
洛谷P1433——最优性剪枝与位运算状压dp
洛谷P1433——dfs最优性剪枝与位运算状压dp。值得积累的好题。原创 2024-01-18 12:33:12 · 970 阅读 · 2 评论 -
01背包的变形——最佳凑单问题
与01背包不同,dp[i][j]表示在总重量不少于j的情况下,总价值的最小值。在这种情况下,应该如何分析问题,写出状态转移方程呢?谨代表个人思路,若有更好的思路,欢迎在评论区指正!原创 2024-01-15 20:14:02 · 411 阅读 · 1 评论 -
算法学习笔记——Dijkstra算法
因为heapq每次弹出的是最小值(对于元组来说是元组的第一个元素最小的那个元组),所以可以把距离放在元组的第一个位置,坐标放在元组的第2、3个位置。原因是从0出发,若走中途不经过2的路径到达2,那么一定会经过1或3,从0到1或从0到3的距离就已经比从0直接到2的距离长了。从起始点出发,重复寻找所有点中距离源点最近的且未访问过的结点,把该节点设置为已访问,然后利用该结点更新该节点的邻居节点的。与0相连的三个点中,0-2的距离是最短的,那么从0到2的最短路径长就是2,即。2是已访问的点,1和3是他的邻居节点。原创 2024-01-15 19:18:08 · 1046 阅读 · 0 评论 -
2022决战双十一——一道dfs题目详解
思路:本题解决方法其实就是brute force,也就是暴力枚举每个物品从所有可能的店铺中购买的情况(最多有m**n种方案)。本来应该写n个长度为m的循环就可以解决,但是由于n是待定量,所以可以改写成深度优先搜索dfs写法。dfs函数的主体是一个循环,意在对相同的一个物品,遍历所有可能售卖该物体的店铺。在循环内部,选择了售卖物品i的shop,然后进行下一个物品的选择。当下一个物品的所有选择枚举完毕后(执行完毕后),回溯对物品i的选择。然后选择下一个售卖物品i的shop,进行相同的操作。原创 2024-01-15 19:08:26 · 333 阅读 · 0 评论