自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简单的数论

【代码】简单的数论。

2023-08-17 21:31:03 46 1

原创 动态规划:线行,树形,矩阵

a.一推一型:比如等比等差数列,q(n)=p*q(n-1),p为公比;a(n)=a(n-1)+d,d为公差;累加和:s(n)=s(n-1)+n;累乘积:f(n)=f(n-1)*n。b.多推一型:比如兔子数列 f(n)=f(n-1)+f(n-2),最长不降子序列。此题有四种解法,顺推两种:人人为我,我为人人。b.多推一(人人为我):数塔问题,背包问题,最长公共子序列。1.2树形:(分枝和分层都清晰)a.一推多(我为人人):数塔问题。a.父推子型(一推多型)b.子推父型(多推一型)1.动态规划的基本类型。

2023-06-22 20:36:15 58 1

原创 BFS算法

2.1 重点考虑父亲和孩子的关系,即父亲可以找到所有的孩子(父亲出栈,合法的孩子入栈;2.3 DFS使用的必要变量 vis[],ans[],BFS的使用的必要变量vis[],father[];1.2 DFS使用的栈(是隐式的栈,先进后出,后进先出),BFS使用的是队列(先进先出,后进后出)1.1 DFS是枪挑一条线,BFS是棍扫一大片,DFS是按枝搜索,BFS是按层搜索。2.2 重点考虑孩子的合法性,即孩子的重复性和是否满足约束条件。1.3 通常DFS可以找到所有的路径,BFS可以找到最短路径。

2023-06-08 20:32:42 50

原创 DFS算法(深度优先算法)

2.3 子集树(左孩子为0,右孩子为1,太极生两仪,两仪生四象,四象生八卦)1.DFS算法是暴力算法,是枚举算法的另外一种形式(树上枚举)2.5 搜索树(孩子和祖先不能重复)2.1 排序树(孩子和祖先不重复)2.4 拆分树(孩子大于等于父亲)1.1 枪挑一条线(DFS)1.2 棍扫一大片(BFS)3.1 模板1 (判孩子法)3.2 模板2 (判父亲法)3. 两个模板+5棵树形式。3.3 排序树(模板1)3.4 组合树(模板1)3.5 子集树(模板1)3.6 拆分树(模板1)3.7 搜索树(模板2)

2023-05-11 22:35:59 100

原创 算法的第二把刷子(枚举)

【代码】算法的第二把刷子(枚举)

2023-04-20 20:29:41 29

原创 算法的第一把刷子:模拟算法

1.模拟算法就是“题上怎么说,我们就怎么做,将过程完全地模拟出来,最终求得答案。2.1 开关灯(C++第四章)2.4 ISBN号码。

2023-04-06 20:29:17 31

原创 动态规划基础

1.2 缺点是当规模比较大时,运行时间很长很长,原因是有重复计算。1.3 优化 用动态规划算法进行优化(记忆化搜索)1.1 优点是程序代码简洁明了。用递归的方法求兔子数列。

2023-03-06 20:33:17 33

原创 拓扑排序算法

1. 拓扑排序算法:将一个有向无环图的所有顶点生成一个线性的序列,来表示图中顶点之间的先后关系。(必须是有向无环图,也就是说必须有入度为零的点)b. 队列或队栈:入度为0 的结点先入队/入栈,对首元素出队/出栈。

2023-03-06 20:06:09 40

原创 最小生成树

3.1 Prim算法:其算法复杂度为0(n*n),其算法思想与Dijkstra算法类似,即第一步选最小,即二步标记,第三步更新。Prim算法和Dijkstra算法的区别在于d[i]的含义不同:在Dijkstra算法中,的[i]表示从起点到第i个节点的最短路径长度。3.2 Kruskal算法,其时间复杂度为0(nlogn),其算法核心思想是依次加边法,核心技术是排序(使用快排,按边的权值进行排序)和并查集(判断是否构成环)3. 最小生成树算法有两种:(kruskal算法必须掌握)5. Kruskal代码。

2023-02-20 20:41:02 42

原创 最短路径算法

所有最短路径算法全部失效,但是用SPFA算法可以检测出负权环,Dijkstra算法,Floyd算法无法检测出负权环。(b)入队:初始时起点入队,之后孩子入队必须要满足两个条件:条件1--经过父结点能使该孩子到起点的距离更短,条件2--孩子未在队中。,就是指图中有边的权值为负数,此时Dijkstra算法失效(无法计算出最短路径),SPFA算法和Floyd算法仍然有效。1. 这个算法是最简单、功能最强大的最短路径算法,但缺点是时间复杂度高。,本质上是BFS算法,主要采用队列,其关键操作是出队和入队。

2023-01-16 20:32:04 127

原创 sort排序函数

3. 对结构体进行排序。1. 对普通数组排序。2. 对动态数组排序。

2023-01-09 20:30:22 97

原创 STL(集合、映射、优先队列)

2.1 特点:map就是指两个集合之间的元素相对应的关系。它弥补了普通数组的缺陷(下标只能是0的正整数),它的下标可以是任意类型。集合的第一个元素为关键字(key word),集合的第二个元素为值(value),关键字必须唯一,值不一定唯一。1.1 特点:集合中的元素不可以重复,因此集合中的元素可以自动去重。集合的增删改查比普通数组快。其时间复杂度是log(n)。3. priority_queue(优先队列)1. set(集合)2. map(映射)

2023-01-02 20:16:50 125

原创 并查集算法

1 并查集是対多个集合的合并,查找以及判断集合内的集合(判断是否是同一集合)2.4 合并(将x和y合并到一个集合,让他们拥有同一个父亲)注意:合并时采用路径压缩的(递归)方法提高查找效率。2.1 初始化(每个元素的父亲是自己)2.2 查找(查找元素x的父亲)3 示例(数据详见代码末尾)

2022-12-26 21:22:34 26

原创 图的存储和遍历2

技巧:关键是如何处理父子关系。对于DFS算法来说父亲出栈,其合法孩子入栈,对于对于BFS算法来说父亲出队,其合法孩子入队。重要工作:判断孩子的合法性(不重复,满足约束条件)b .数组模拟邻接表(普通数组和动态数组)a .深度优先搜索(dfs)b .广度优先搜索(dfs)

2022-12-19 21:46:18 38

原创 图的存储及遍历

1.1 边的集合法,记录节点数、边数,每条边的起点和终点。这是最简单最基本的方法。但是这种方法寻找邻居点比较麻烦,需要转成。邻接矩阵(二维数组),其记录任意两点之间是否有边,简单容易理解,但是有很多冗余数据 ,时间复杂度高,适合存储稠密图。1.3 数组模拟邻接表,其只记录存有边的两点,不容易理解,但无冗余数据,时间复杂度低,适合存储稀疏图。1.3.1 方法一:普通数组实现。1.3.2 方法二:动态数组实现。1. 图的存储方法有。

2022-12-12 20:31:48 126

原创 数据结构之栈和队列

1. 栈的特性1.1 栈只有一个开口,进栈出栈都从一个口过1.2 栈能实现先进后出,后进先出 1.3 栈只有一个指针,称之为栈顶指针(top)。入栈时栈顶指针加一,出栈时栈顶指针减一1.4 DFS算法用到了栈(内隐式)1.5 使用栈是最关键问题是:出入栈的对象是谁,什么时候入栈,什么时候出栈1.6 栈的基本操作是:出栈,入栈1.7 用普通数组实现栈1.8 用STL实现栈 2. 队列的特性2.1 队列有两个开口,从入口(队尾)进,从出口(队头)出2.2 队列能实现先进先出,后进后出2.3 队列有两个指针

2022-12-05 21:32:28 307

原创 基本套路2

2.3 二分查找通常查找目标的下标,二分答案通常用来求“最小的最大或最大的最小”2.4.1 查找数列里第一个>=key,返回下标。2.4.2 查找数列里第一个>key,返回下标。2.2 能用二分查找的条件是被查找的数列有序(从小到大排或者从大到小排)1.1 函数自己调用自己,俗称甩锅大法,递归是循环的另外一种形式。1.2 递归实现的关键技术是:递归条件和递归跳出条件。2.1 因为顺序查找太慢了所以用二分查找。2. 二分查找和二分答案。1.3.2 求累乘积。1.3.3 DFS算法。2.4 必背模板程序。

2022-11-28 21:38:03 37

原创 第一章 基本套路

关键要弄明白是父亲推出孩子(先序遍历),还是孩子推出父亲(后序遍历)应用条件:答案跟具体数值无关,只跟数据大小关系有关。(3)例如归并排序算法,二分查找和二分答案。二分答案的用处是最小的最大,最大的最小。二分查找的条件必须是有序数列。通常用于对空间复杂度的优化。通常是先排序后使用贪心算法。(1)大事化小,小事化了。(2)分而治之,合而用之。具体问题看一本通第六章。3.二分查找和二分答案。

2022-11-07 21:27:12 53

原创 复赛程序怎么写

第3步: 按PDF试题建.cpp/.in文件。第4步: 写程序框架及freopen()语句。第1步: 建一个文件夹,命名为学号。第2步: 按PDF试题建题目文件夹。第5步: 将数据写入.in文件。第6步:开始编写解题程序。

2022-10-24 21:41:45 78

空空如也

空空如也

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

TA关注的人

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