数据结构与算法
文章平均质量分 93
宁远x
已入职某血汗工厂,主攻LLM训练,不定期更新博客
展开
-
背包问题基础与应用
背包中的每个物品只能用一次定义:表示从下标的物品中任取,放进容量为的背包的最大价值初始化:转移方程:将物品放入背包有两种选择:遍历顺序:到底是先遍历物品呢?还是先遍历背包?根据上图,依赖于,即左上角和正上方,画图可知两种遍历顺序都可以1.先遍历物品,后遍历背包2.先遍历背包,后遍历物品完整代码:初始化的代码可以省略,类比在物品1之前,加了一个质量为0价值为0的物品0状态压缩:仔细观察转移方程:发现的取值只依赖于上一行的值,而在循环遍历过程中,上一行的数据已经计算过了,我们只需要把的数据保留下来具原创 2023-04-18 20:09:18 · 538 阅读 · 1 评论 -
字典树基础与应用
一个节点的所有子孙具有相同的前缀,也就是这个节点代表的字符串,根节点代表空字符串。时,就不会继续往下比较了,因为不管后面是什么结果,a异或b的结果都会比c小。从左往右比较,当比较到第3位时,异或结果是比x小的,所以后面就不用比较了。从字典树的根开始遍历,向下查找字符串的插入位置,并记录满足条件的前缀数量。,两两取异或,根据异或结果计数,这是我第一次写的代码,毫无疑问超时了。其中的键通常是字符串,由节点在树中的位置决定,键保存在。每遍历一个节点,不管节点是否存在,节点的。,我们从高位往低位比较,当找到一个。原创 2023-01-06 17:27:26 · 1037 阅读 · 0 评论 -
排序算法总结
堆排序属于不稳定排序和就地排序,如果有两个相等的数,有着不同的父节点,一个父节点发生交换,另一个不交换,两个相等数的顺序就发生了改变。稳定排序要求不改变相等元素的相对位置,而选择排序选出最小元素,和前面的元素交换位置,可能会打乱相等元素的顺序。答案是每次将根节点(堆首,最大值)与最后一个叶子节点(堆尾)交换,然后缩小堆的尺寸,更新堆,直到堆的尺寸为1。从下往上构建堆,保证根节点是最大值,每次更新节点,都需要递归的维护下层树。快速排序划分区间,可能将相等的值划分到不同的区间,所以不稳定。原创 2023-01-05 22:39:12 · 254 阅读 · 0 评论