自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 重温BFS

【代码】重温BFS。

2023-04-01 12:47:04 76

原创 【二分查找】

适用条件: 存在一个有序的数列;能够把题目建模为在有序数列上查找一个合适的数值。实数二分相比较整数二分就没这么多限制。套路题(最小值最大化,最大值最小化)在单调递增序列中找x或者x的后继。在单调递增序列中找x或者x的前驱。二分+check(思维)二分+check(贪心)

2023-03-29 13:21:57 167

原创 [贪心]总结

注意,直接用sort排序会出错。

2023-02-25 18:24:09 70

原创 【python日期/时间题】

a = "2013-10-10 23:40:00"想改为 a = "2013/10/10 23:40:00"time及datetime函数应用。

2023-04-06 20:56:57 356

原创 【高级数据结构其二·树状数组】

【代码】【高级数据结构其二·树状数组】

2023-04-05 22:12:45 139

原创 【高级数据结构其一·并查集】

经典应用:连通子图,最小生成树Kruskal,最近公共祖先。方法一:邻接表+枚举二进制状态+DFS连通新判断。方法二:邻接矩阵+DFS全排列枚举+并查集。方法三:DFS全排列枚举+DFS连通性判断。用于快速处理不相交集合的查询和合并问题。路径压缩后,为O(1),效率大大提升。因为复杂度为O(n),效率太慢。笔者在此就不再详细写此方法。

2023-04-05 15:44:35 146

原创 重温DFS

dfs时,选或不选第k个数,就实现了各种组合。打印二进制数。

2023-04-03 09:48:53 205

原创 深度优先搜索(DFS)

回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。DFS的另一种结束条件,就是找到了目标出口,也就是找到了题目的答案。到发现节点v的那条边的起始节点。

2023-03-31 10:21:21 157

原创 dijkstra算法(优先队列PriorityQueue)

作用:dijkstra算法能够解决边权非负的加权有向图的单起点最短路径问题。也就是说,规定一个起点,就能够得到这个加权有向图中其他点距该起点的最短距离。数据结构(建图):建图:graph=[[float('inf') for i in range(n)]for j in range(n)] #二维图for i in range(m): a,b,c=map(int,input().split()) graph[a][b]=c graph[b][a]=c1,数.

2023-03-31 10:02:20 561

原创 宽度优先搜索(广度优先搜索,BFS)

回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。DFS的另一种结束条件,就是找到了目标出口,也就是找到了题目的答案。到发现节点v的那条边的起始节点。

2023-03-31 10:02:09 1042

原创 [KMP]

这不就是相当于把s2往前推的效果吗?这也是为什么求next信息时,规定任何字符串,0位置的next信息为-1。想象一下,当配置串跳着跳着,某一刻你的next信息值小于0了,你就知道不能再往前跳了,也就代表着较长串在这个区间内已经是不可能配出我了,较长串你该重新换个开头了。

2023-03-31 09:59:40 64

原创 [hash]

简单点讲就是把任意一段数据经过某种算法生成一段唯一的固定长度的数据。

2023-03-31 09:59:27 67

原创 [二叉树+DFS]树的前序遍历

【代码】[二叉树+DFS]树的前序遍历。

2023-03-31 09:57:36 71

原创 【力扣刷题python】

DFS 相同步长的所有路径个数。以值为键值,下标为值创建字典。动态规划 无初始化型。

2023-03-30 20:58:11 210

原创 关于python的一些知识

sort的效率比sorted高,sort是快速排序,时间复杂度是O(n*ln(n)),与归并排序和快速排序时间复杂度一样。d=copy.deepcopy(a) 深拷贝,创造一个与a元素相等的列表b,地址不一样。c=a.copy() 浅拷贝,可改变列表中的元素时同时改变,但添加元素时互不影响。元组的访问和处理速度比列表快,不可变,但是内有列表可对列表进行改变。b=a 幅值,传对象的引用,地址一样,完全相等。a+=b(原地执行)的效率比a=a+b要高。

2023-03-30 20:57:10 596

原创 【动态规划DP】

动态规划和递归十分类似,算是和DFS一样是递归的另一种解题实现方式动态规划是编程解题的一种重要手段。1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。与此同时,他提出了解决这类问题的“最优化原理”,从而创建了解决最优化问题的一种新方法:动态规划。动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。

2023-03-30 20:55:27 257

原创 【字符串和日期】

(m+1)/5+y+y/4-y/100+y/400+1)%7 ,在公式中d表示日期中的日数,m表示月份数,y表示年数。我们如果直接对字符串,或者列表进行修改会导致其长度和下标不断变化,故十分麻烦。普通闰年:公历年份不是100的倍数的,且是4的倍数,为闰年。世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年。我们可以直接用split函数和join函数。

2023-03-30 20:55:23 60

原创 【二叉树的存储:使用静态数组】

节点tree[p]的右子节点:tree[2*p+1]节点tree[p]的左子节点:tree[2*p]定义静态数组:tree=['']*n。根节点:tree[1]

2023-03-30 20:53:30 104

原创 【前缀和】

我们就可以先将s进行排序,也就是2,这时可以保证最大值最小;但因为s0和sn不能移动,所以,这时我们把s0和sn再放到起点和终点,不过并不是简单的放两个点,而是将上图的1和3区域铺开,),重复路段取间隔点会使相邻点差值最小来看,就是一半跟着s0,sn取翻过来,一半保持不变,这个时候要注意s0→min和max→sn是从大到小排序,min→max是从小到大排序。铺开后,因为min→s0和sn→max与两头的s0→min和max→sn重复了,如果s0和sn不是最小值和最大值,那该怎么做呢?

2023-03-28 15:44:09 364

原创 【赛后Python解】第五届“传智杯”全国大学生计算机大赛(初赛B组)

解析:贪心题,先从小到大排序,然后利用枚举从右(i=0)开始变化,从左(j=0)开始变化,每一步的变化操作都做完后取极值,然后再与之前的比较,得出最小的极值。读者可能会不明白为什么从右来一遍,还要从左再来一遍,因为从右开始时,j的取值为x,也就是m。解析:数学题,找规律,像分段函数,然后利用等差数列求和求解就行了。用python写超时了。

2023-02-27 17:48:58 678

原创 【二叉树】

还有一问是判断该树是否为完全二叉树,完全二叉树的定义是若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,所以最后的结点编号肯定和n是相等的。这是由于二叉查找树本身的定义中就包含了左子树

2023-02-22 13:13:58 505 1

原创 【最短路算法】dijkstra,SPFA和folyd

在了解本知识点之前,首先要了解图的建立,也就是邻接表和邻接矩阵。邻接矩阵适用于稠密图邻接表适用于稀疏图。

2022-11-15 10:56:03 517

原创 openmv图像识别

img.draw_rectangle(blob.rect(), color=())#一般用法,来跟踪目标,或者给出具体值(x, y, w, h)固定框。img.draw_cross(blob.cx(), blob.cy(),color=(0, 0, 0))#一般用法。5.blob.density(),目标色块的所占面积,即密度,0.0~1.0。3和4可以解决目标所在位置位于摄像头中间时执行相应操作。draw_rectangle(),目标矩形,4.draw_cross(),目标十字。# 寻找最大色块函数。

2022-10-25 17:00:17 4907 1

原创 【DFS剪枝】

对于求最优解的一类问题,通常可以用最优性剪枝,比如在求解迷宫最短路的时候,如果发现当前的步数已经超过了当前最优解,那从当前状态开始的搜索都是多余的,因为这样搜索下去永远都搜不到更优的解。如果搜索方法是每次从剩下的数里选一个数,一共搜到第k层,那么1,2,3这个选取方法能被搜索到6次,这是没必要的,因为我们只关注选出来的数的和,而根本不会关注选出来的数的顺序,所以这里可以用重复性剪枝。此外,在搜索是否有可行解的过程中,一旦找到了一组可行解,后面所有的搜索都不必再进行了,这算是最优性剪枝的一个特例。

2022-10-18 16:12:31 1069

原创 【抽象DFS】

在第一层dfs的时候,我们可以枚举是否选第一个数,如果选第一个数则让S加上第一个数且k加一,dfs进入到下一层;在第二层,对第二个数做同样的处理, dfs的过程中记录已经选取的数的个数,如果已经选取了k个数,判断S值是否等于sum。下图是这个搜索过程对应的 搜索树,搜索树上的每一个结点都是一个状态,一个状态包含两个值S和k,也就是一个状态对应当前的数值总和,以及选的数的个数。前面说过, dfs看起来是运行在图上的搜索算法,而前一节给大家展示的dfs过程,我们没有看到图的存在,这就是抽象形式的dfs的特点。

2022-10-16 10:33:41 774

原创 【DFS题型三/求最小数值】葱头君开公司

每天,蒜头君都要分配 N 项工作给他的员工,但是,由于能力的不同,每个人对处理相同工作所需要的时间有快有慢。众所周知,蒜头君是一个非常重视效率的人,他想知道该如何分配工作,才能使得完成所有工作的时间总和最小(每个员工只可以被分配到一个工作)。但是我们也都知道蒜头君不是一般的懒,所以蒜头君找到了你,请你拯救一下蒜头君吧!task[N][N],task[i][j] 指的是第 i 项工作如果由 j 号员工完成所需要的时间。第一行输入一个整数 N,代表有 N 个员工,员工编号从 1 到 N。

2022-10-15 16:28:25 118

原创 【DFS题型九/双向DFS】王子救公主

问在这个迷宫中,蒜头君是否可以救出公主(蒜头君和公主相遇后,就能背着公主逃出迷宫了)。一天,蒜头君梦见自己当上了王子,但是不幸的是,自己的公主被可恶的巫婆抓走了。’.‘表示可以通行的路,’#'表示迷宫的墙,'w’表示王子开始所在的位置,'g’表示公主开始所在的位置。标记vis建立为三维,一维存王子(d=0),一维存公主(d=1),(回溯时不将vis清零)若存在重合点就说明可以相遇。当d=1时,步长为2-d也就是1,为公主。输出王子是不可以救出自己的公主,如果能救出则输出"yes",否则输出"no"。

2022-10-15 16:13:59 246

原创 【DFS题型八/树状图】家谱

这一天蒜头君拿到了自己家的家谱,蒜头君便想知道,在自己家的家谱中,每位祖先有多少直系后代(直系后代包括他的孩子和他孩子的直系后代)。但是家族历史源远流长,家谱实在太庞大了,自己一个人完全数不过来。热心的你便自告奋勇帮蒜头君写一个程序,来统计每位祖先有多少直系后代。接下来读入 n−1 行,每行有两个整数 x(1≤x≤n), y(1≤y≤n),表示 x 是 y 的父母。输入的第一行有一个整数 n(1≤n≤100000),表示家谱中的总人数。输出 n 行,每行有一个整数,表示第 i 个人有多少个直系后代。

2022-10-15 14:11:44 156

原创 【DFS题型七/连通块】最大岛屿

这一天蒜头君生日,他的朋友们一起来给蒜头君买一个大的蛋糕过生日。游戏做完后到了切蛋糕的时刻了,朋友们知道蒜头君喜欢吃蛋糕,便让蒜头君自己给自己切一块最大的。第一行输入两个被空格隔开的整数 R(1 \le R \le 1000)R(1≤R≤1000) 和 C(1 \le C \le 1000)C(1≤C≤1000)。蒜头君把这些水果分为两类,一类是自己喜欢吃的水果,用’#‘来表示;一类是自己不喜欢吃的水果,用’.'来表示。输出一个整数,表示蒜头君可以吃到的蛋糕最大是多少(即对应到网格中的格子数)。

2022-10-15 12:36:15 95

原创 【DFS题型五/最短路】迷宫

【代码】【DFS题型五/最短路】

2022-10-15 12:15:51 134

原创 【DFS题型六/反向DFS】作物杂交

【代码】【DFS题型六/反向DFS】作物杂交。

2022-10-06 16:14:52 321

原创 【抽象DFS/四维坐标/全局变量/最大值】八皇后/改

需要注意的是左斜和右斜在同一行都可以用x,y的代数和来判断,同一左斜↗的棋子 i+j是一个定值,同一右斜↘的棋子 i-j是一个定值,不过会出现负数,所以整体加个n防止出现负数索引。因为python速度太慢了,需要剪枝,但目前并不知道如何剪枝,因为样例比较少,故可以用打表法,选择将n=12,n=13得到答案在打印出来。通过这样来查询四个方向是否有其他的棋子存在。

2022-10-06 10:15:55 193

原创 【DFS题型一/递归/数字全排序】递归实现枚举

【代码】【DFS题型一/递归/数字全排序】递归实现排列型枚举。

2022-10-06 08:20:07 149

原创 【DFS题型二/所有路径/全局变量】迷宫

【代码】【DFS题型二/二维坐标/全局变量】迷宫。

2022-10-05 16:25:52 149

原创 【BFS题型四/填充】长草

BFS是广度优先搜索,在第一层的所有未执行完之前是不会进入下一层的,所以当z==t时,所有的z==t-1都已经执行完成了。

2022-10-04 12:55:29 116

原创 【BFS题型四/填充/全局变量】全球变暖

注意列表的复制,不能使其同时指向的地址相同。

2022-10-04 12:14:16 172

原创 【BFS题型二/迷宫/最短路/路径储存/值储存】学霸的迷宫

【代码】【BFS/迷宫/最短路/路径储存/值储存】

2022-10-03 22:46:20 228

原创 【BFS题型二/四维坐标]打开转盘锁

【代码】【BFS/四维坐标]打开转盘锁。

2022-10-03 21:56:46 135

原创 【BFS】岛屿的周长

【代码】【BFS】

2022-10-03 20:05:43 157

原创 【BFS题型三/简单图/打印所有指定路径】

【代码】【BFS题型三/简单图/打印所有指定路径】

2022-10-03 19:44:53 119

空空如也

空空如也

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

TA关注的人

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