- 博客(125)
- 收藏
- 关注
原创 AcWing 1303. 斐波那契前 n 项和(矩阵乘法 + 快速幂,python,全网最详细讲解)(什么是快速幂)
快速幂(Fast Exponentiation)是一种用于高效计算幂运算(即ana^nan)的算法。它的核心思想是通过二进制分解和平方递推,将时间复杂度从朴素的OnO(n)On降低到OlognO(log n)Ologn,特别适用于大指数nnn的情况。
2025-03-09 16:52:10
850
原创 AcWing 1243. 糖果(01背包和状态压缩的结合,全网最详细讲解,最容易理解的版本)
相信来看本题题解的小伙伴们都知道什么是01背包和状态压缩dp了,那么话不多说,来看看本题怎么求解的。
2025-03-06 21:55:59
1005
原创 AcWing 1264. 动态求连续区间和 ,详细讲解线段树与树状数组(Python,篇二)
顾名思义就是一个结构为树形结构的数组,于二叉树的结构类似但又不同,它是在二叉树的结构上删除了一些中间节点,来看两幅图就明白了.1. 这是二叉树的结构2. 这是树状数组的结构不难发现,树状数组相比于二叉树删除了一些节点,但是为什么要删除呢?这就和树状数组的一些性质(lowbit)有关了,不懂没关系,继续往下看.
2025-02-19 21:46:47
768
原创 最长上升子序列 II(包能看懂的版本,小白必看,贪心,python讲解,其他语言均适用)
我的代码可能跟别人比起来不是那么简洁,但是我个人认为还是很好理解的,个人偏向于好理解和好写的代码,而非很简洁的代码。
2025-01-27 01:17:29
1040
原创 匈牙利算法(AcWing 861. 二分图的最大匹配)(带图讲解,超详细)
至此为止,图论的所有模板题都已讲完,之后我也会对这些专栏进行整理,后续再写图论的算法题讲解时也会放到对应的算法的专栏里去。撒花🌸🌸🌸。
2024-12-12 22:24:11
1683
原创 染色法(AcWing 860. 染色法判定二分图)(带图讲解,超详细)
做本题之前首要要清楚二分图的概念。有两顶点集且图中每条边的的两个顶点分别位于两个顶点集中,每个顶点集中没有边直接相连接!说人话的定义:图中点通过移动能分成左右两部分,左侧的点只和右侧的点相连,右侧的点只和左侧的点相连。
2024-12-12 17:31:50
1040
原创 Kruskal算法(859. Kruskal算法求最小生成树)(带图讲解,超详细)
本篇博客学习一下Kruskal算法,它适用于稀疏图解决最小生成树问题,时间复杂度为Omlogm(实际时间小于mlogm。
2024-12-11 22:49:10
1074
原创 Prim算法(858. Prim算法求最小生成树,朴素版Prim)(带图讲解,超详细)(带上了保存路径)
本专栏博客将会带大家讲解其中中有两种算法,一种是,Prim算法又分为朴素版的Prim(时间复杂度On2)和堆优化版的Prim(时间复杂度Omlogn)(跟Dijkstra算法分类一样,写法也很类似);另一种是(时间复杂度Omlogm朴素版Prim算法适合用稠密图,而堆优化版Prim和Kruskal算法适合用稀疏图。堆优化版的Prim算法很少用(99%用不到),所以本专栏博客不对其进行讲解。如果对稠密图和稀疏图的概念和构造还不清楚,可以参考和。
2024-12-11 18:34:32
2262
原创 Floyd算法(854. Floyd求最短路)
本篇博客就来讲解一下求解多源汇最短路问题中的Floyd算法。什么是多源汇最短路?就是求n个点中任意两点的距离。
2024-12-10 17:14:17
1014
原创 spfa算法(AcWing 852. spfa判断负环)(带图讲解,超详细)
在上一篇博客中讲解了SPFA算法,同时也强调了SPFA算法的两个注意事项。⭐️⭐️一般使用SPFA算法,方法是用一个cnt数组记录每个点到源点的边数,一个点被更新一次就+1,一旦有点的边数达到了n那就证明存在了负环。本篇博客就来讲解一下SPFA算法是怎样来判断负环的。
2024-12-10 16:19:13
1198
原创 spfa算法(AcWing 851. spfa求最短路)(带图讲解,超详细)
上一篇博客中讲解了最短路问题中单源最短路中存在负权边的Bellman-Ford算法,时间复杂度为Onm。(单源最短路:从1号点到n号点的最短距离)上面这张图讲贯穿我们图论中的最短路问题,大家一定要牢记,这其中的每个算法我都会进行讲解,并放到单独的一个专栏里。本篇博客就来讲解SPFA算法,它是Bellman-Ford算法的优化,在99%的存在负权边的问题里都可以用SPFA来进行求解(大家可以放心大胆的用,除了存在负权回路的问题,这个负权回路在下面会讲)。它可以把时间复杂度优化到Om。
2024-12-09 17:56:18
1714
原创 bellman-ford 算法(AcWing 853. 有边数限制的最短路)(带图讲解,超详细)
Bellman - ford 算法是求含负权图的单源最短路径的一种算法,效率较低,代码难度较小。其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在 n-1 次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。(通俗的来讲就是:假设 1 号点到 n 号点是可达的,每一个点同时向指向的方向出发,更新相邻的点的最短距离,通过循环 n-1 次操作,若图中不存在负环,则 1 号点一定会到达 n 号点,若图中存在负环,则在 n-1 次松弛后一定还会更新)Bellman - ford 算法。
2024-12-07 19:15:37
1366
原创 KMP算法详细讲解(超详细配图讲解,小白也可以听懂)
1024程序员节|征文#前言:本篇博会讲解学习KMP算法中遇到的痛难点问题(如:next数组的定义、如何求解next数组、回溯时为什么要回溯到next[i]、前缀和后缀的概念和求解过程等等),这也是我在学习中遇到的困惑点,由此写下本篇博客,希望对大家有所帮助。老规矩,先由列题来引入知识点。题目:给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P 在字符串 S 中多次作为子串出现。求出模式串 P 在字符串 S 中所有出现的位置的起始下标。
2024-10-26 18:34:56
3914
6
原创 AcWing 802. 区间和(离散化算法,python)
本题猛的一看似乎就是一道前缀和的模板题,但需要注意到这里所谓的“坐标”的范围较大,范围在−109≤x≤109−109≤x≤109,为了存下被修改的点的数据,如果将它们的坐标作为数组的下标就需要开一个2∗1092*10^92∗109大小的数组,肯定会爆内存,况且这里的坐标还有负值,不方便进行存储。所以要提出一个新的能方便快捷存数据的算法——离散化。
2024-10-09 18:55:59
866
原创 博客管理系统可行性分析报告
随着互联网技术的迅猛发展,博客作为一种重要的信息传播和交流平台,已广泛应用于个人、企业及教育机构等多个领域。博客不仅提供了一个分享知识和经验的渠道,还能够增强用户之间的互动,促进信息的自由流通。在这样的背景下,开发一套完整的博客管理系统显得尤为重要。该系统应能支持内容的创作、编辑、发布、管理和分享,同时提供用户认证、数据分析和社区互动等功能。本可行性分析报告旨在评估开发博客管理系统的可行性,从技术可行性、经济可行性及操作可行性三个方面进行深入分析。
2024-09-21 22:06:10
888
原创 Django学习实战之评论验证码功能(附A)
当我们使用一个新组件时,需要尽可能理解它的运行原理,这样我们在必要时可以很方便地对其进行定制,甚至根据这套原理来自行实现。
2024-09-21 21:59:31
1554
原创 Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
每个章节都有对应的分支,比如03-admin就是对应第3章的内容,读者可以自行切换分支来查看对应代码。
2024-09-21 16:51:33
847
原创 Django学习实战篇五(适合略有基础的新手小白学习)(从0开发项目)
前言: 本章中,我们开始引入前端框架Bootstrap 来美化界面。在前面的章节中,我们通过编写后端代码来处理数据。数据之于网站,就相当于灵魂之于人类。而网站的前端就相当于人的形体外貌。其中HTML是骨架,而CSS是皮肤,JavaScript就是肢体动作,可以用来展示数据,处理跟用户的交互行为。 上面的说法稍稍有点感性,对于技术人员来说,比较好理解的说法是JavaScript是编程语言,跟Python没有太大的区别,只是执行环境不同,处理的目标不同。从语言本质上来说,这两种语言都是动态语言,有很
2024-09-17 01:19:43
826
原创 Django学习实战篇四(适合略有基础的新手小白学习)(从0开发项目)
在本章中,我们开始编写面向用户的界面,其中只涉及简单的HTML结构,不会做太多美化,目的就是把后台创建的数据展示到前台。从技术上来讲,这一节将涉及Django 中function view和 class-based view 的用法,它们本身没有优劣之分,也不是说用class-based view就是高级技术。场景不同,需要用到的技术也不同,仅此而已。本章中,我们先使用function view来完成前台逻辑的编写,最后演化到class-based view,这样能够对这两个方法或者技术有更直观的认识。
2024-09-16 16:51:55
1380
原创 Django学习实战篇三(适合略有基础的新手小白学习)(从0开发项目)
好了,到此为止,一个简单的管理后台就配置好了,我们稍稍总结一下。你应该能够体会到“当你有了Model之后,就自动有了一个管理系统”的感觉。如上面所说,这一切都是基于Model来实现的。通过继承admin.ModelAdmin,就能实现对这个Model的增、删、改、查页面的配置。这里的ModelAdmin 是很重要的一环,后面还会接触到 Mode1Form 的概念,这些都是跟 Model紧耦合的。在 Model之上可以实现更多的业务逻辑。
2024-09-09 15:18:12
1232
原创 Django学习实战篇二(适合略有基础的新手小白学习)(从0开发项目)
跟着上一节写完这些Model以及对应的字段之后,你可能会疑惑这些字段分别是什么意思,以及为什么要这么写。还有为什么定义好那些代码之后,Django就能帮我们创建表了?这一节就来详细解释一下。2.3.1 ORM的基本概念在进行详细的字段介绍之前,先来了解一下什么是ORM(Object Relational Mapping,对象关系映射)。“对象关系映射”听起来有点学术化,不太好理解。用大白话解释一下就很容易明白,那就是把我们定义的对象(类)映射到对应的数据库的表上。
2024-09-02 22:47:55
2273
原创 Django学习实战篇一(适合略有基础的新手小白学习)(从0开发项目)
在这一章中,我们主要介绍了日常开发中接收到需求后应该如何处理,通过需求分析最终应该得到哪些产出,从而对后续的开发提供指导。下一章中开始带大家进入正式开发。
2024-08-23 22:01:16
2167
1
原创 git中如何修改提交信息(版本号)
这里只讲未进行远程提交时的修改操作。当进行提交时发现提交信息写错了怎么办?git commit -m ‘新的版本号或提交信息’
2024-08-13 03:37:39
2888
原创 git学习笔记(总结了常见命令与学习中遇到的问题和解决方法)
Git是一个分布式的版本控制软件。软件。版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据分布式文件夹拷贝本地版本控制集中式版本控制分布式版本控制。
2024-07-26 23:35:46
1232
原创 git配置BeyondCompare解决冲突(全网最细讲解,亲测有用,windows版本)
网上查阅了很多资料,大都讲的不是很全面,很多还配置不成功,特写此篇博客来详细全面的讲解配置步骤(亲测可用)。本篇文章具有局限性,欢迎大家相互交流,批评指正。特此说明,以下步骤二和三完成任何一个都可以解决冲突,保险起见可以两种都完成。
2024-07-24 21:24:40
2213
1
原创 Dijkstra求最短路篇二(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)(超简单的邻接表的构建)
堆优化版dijkstra适合稀疏图堆优化版的dijkstra是对朴素版dijkstra进行了优化,在朴素版dijkstra中时间复杂度最高的寻找距离最短的点O(n^2)可以使用最小堆优化。一号点的距离初始化为零,其他点初始化成无穷大。将一号点放入堆中。不断循环,直到堆空。每一次循环中执行的操作为:弹出堆顶(与朴素版diijkstra找到S外距离最短的点相同,并标记该点的最短路径已经确定)。用该点更新临界点的距离,若更新成功就加入到堆中。时间复杂度分析OnO(n)OnOn。
2024-06-01 22:54:46
774
原创 Dijkstra求最短路篇一(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)(超简单的邻接矩阵的构建)
Dijkstra求最短路问题是图论的经典问题,首先介绍一下迪杰斯特拉算法采用的是一种贪心的策略。用一个 dist 数组保存源点到其余各个节点的距离,dist[i] 表示源点到节点 i 的距离。初始时,dist数组的各个元素为无穷大。用一个状态数组 state 记录是否找到了源点到该节点的最短距离,state[i] 如果为真,则表示找到了源点到节点 i 的最短距离,state[i] 如果为假,则表示源点到节点 i 的最短距离还没有找到。初始时,state 各个元素为假。源点到源点的距离为 0。
2024-06-01 22:54:35
1034
1
原创 AcWing 846. 树的重心(dfs)(全网最详细讲解)(python版本,其他语言也能听懂)
本题最难理解的还是递归部分了,因为我们做的递归大部分都是在递归前处理数据,如果在递归后处理数据就比较难理解了。递归比较绕,但只要从后往前来推导就比较好理解了。
2024-05-29 01:14:24
1372
原创 AcWing 1264. 动态求连续区间和 ,详细讲解线段树与树状数组(Python,篇一)
自己写了半天的博客发现还是水平有限,介绍的知识点不太全面,这里引用一篇其他博主的线段树介绍什么是线段树,介绍的内容很细也很好理解。这里说明一下问什么要开4n倍的数组空间:设最后有n个叶结点,对应的满二叉树最多有2n个叶结点(这是因为极端情况是倒数第二层区间长度1,2交替) 然后根据(2n)+n+n/2…<=4n下面结合具体题目来看看如何用线段树解决实际问题。
2024-04-25 21:19:35
1046
原创 AcWing 95. 费解的开关(python超详细讲解)(递推)(位运算)
本题涉及的知识点还是比较广的,难点也比较多,一个是递推的确立,一个是第一行的固定,一个是如何用代码实现第一行的固定,还有一个是python标准库copy的使用(深拷贝与浅拷贝的区别与使用)。
2024-04-19 01:21:46
907
原创 python中对列表的复制操作(浅拷贝与深拷贝)
综上所述,path = num[:]和path = num.copy()是浅拷贝操作,会共享内部对象的引用,而path = copy.deepcopy(num)是深拷贝操作,会创建完全独立的副本。根据具体的需求,选择适合的复制方式来确保数据的安全性。使用深拷贝就可以完美解决多维数组中对原数组的保留和修改问题。
2024-04-19 00:03:58
1844
原创 线性筛法求素数(欧拉筛法)(求质数,O(n)时间复杂度)(外加求每个整数的最小质因子)(python)
欧拉筛法是很多数论题型解法的“敲门砖”,下篇博客将讲解一道比较难的数论题,该题用到了本篇博客的欧拉筛法和最小质因子求法。
2024-04-03 00:02:46
1108
原创 蓝桥杯:大臣的旅费(dfs,bfs,python,树形DP)(树的直径问题)(图的存储之用数组作为邻接表)
本篇博客可以说是上一篇博客的延伸版,上一篇博客全球变暖,讲解bfs和dfs更详细的,本篇博客更多的是邻接表的构建和树的直径问题。
2024-03-31 00:27:50
1317
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人