算法
青橘短衫.
这个作者很懒,什么都没留下…
展开
-
动态规划
动态规划例题引入动态规划临时工代码实现递归实现代码优化非递归实现组合总和代码实现递归实现代码优化非递归实现 例题引入 递归+记忆化 (对于重叠子问题,可以加入记忆化,把答案保存起来,加快运算速度) 动态规划 临时工 一个临时工,在一个时间段里有8份工作可以选择,每份工作工作的时间不同,每份工作的报酬也不同,但工作时间可能重贴,重叠的工作不能选择,我们要找出最大受益的选择方案(最优解)。 我们对这八个工作内容进行编号1…8。 我们将该问题拆分为一个选与不选的问题 选: 代码实现 递归实现 ar原创 2021-05-14 11:16:29 · 96 阅读 · 0 评论 -
并查集算法
文章目录概念(Disjoint set)用处代码实现构建并查集初始化找到根节点合并集合缺点 概念(Disjoint set) 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。 并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根,就能确定它在哪个集合里。 用处 最大作用是检查一个图存不存在一个环 图形表示 代码实现 构建并查集 初始化 #include<stdio.h> # define VERTICES 6原创 2021-05-13 15:05:27 · 287 阅读 · 0 评论 -
线段树
线段树 创建线段树 更新线段树 区间求和 区间求和优化(记忆化递归)原创 2021-05-12 14:46:40 · 104 阅读 · 0 评论 -
树状数组
lowbit()函数 lowbit(x)是x的二进制表达式中最低位的1所对应的值。(非负整数n在二级制表示下最低位1及其后面的00构成的数值) 比如,6的二进制是110,所以lowbit(6)=2。 最近回头看树状数组,发现关于lowbit()函数,目前有两种算法。 第一种是比较常见的,也是我一直在用的: int lowbit(int x) { return x&(-x); } 最近发现另外一种算法 int lowbit(int x) { return x&(x^(x-原创 2021-05-12 11:36:07 · 75 阅读 · 0 评论