自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯2023年第十四届省赛真题题解

和常规的染色题目相比, 本题多了一个合并的步骤, 染色的时候通过八联通将各个岛屿分开, 并且将海水标记为2, 如果后续遍历地图的时候遇到了0, 说明这里是海水八联通进不来的地方, 直接用岛屿的标志1去合并这一整个镂空的岛屿 , 类似这样把这个岛里面铺满;如果像下面这样, 外面的岛没有把里面的岛完全包围的情况, 那么也符合我们的预期, 他们是两个岛屿, 在dfs4(四联通)的时候会统计成两个岛屿。坑: 多组测试数据记得memset g 和st, 我就是没有memset st 一直wa;

2024-02-29 14:10:50 663

原创 洛谷题单-动态规划的引入

拓扑排序: 把入度为0的节点删掉并且删掉其相关的边, 重复此步骤直到途中所有节点都删掉了, 节点删掉的顺序就是拓扑排序;看了一些dp的做法(也没完全看出来, 感觉dp的写法也长得很想记忆化搜索), 觉得这道题还是一个搜索的做法,如果一个数加上上一个有效序列得到的结果比这个数小,那么这个数单独成为一个新的有效序列。如果一个数加上上一个有效序列得到的结果比这个数大,那么该数也属于这个有效序列。我觉得拓扑排序相关的算法就是在 找到下一个入度为0的节点的时候执行相关操作。不知道为啥我这段代码会wa两个点。

2024-02-29 13:01:37 845

原创 手把手教学如何将springboot-web项目部署到服务器上

首先看你的项目是否有中间件, 比如mysql,redis等;等我们需要再配置文件中做出对应的修改。接下来介绍我的项目部署过程。实际情况我们可能更改了。

2024-01-15 19:52:19 699

原创 Web开发SpringBoot SpringMVC Spring的学习笔记(包含开发常用工具类)

因为idea本质上是一个可视化的编辑器, java编译器会根据Lombok的注解修改语法树,最终结果是被注解标记的java类生成的字节码文件中会包含Lombok生成的代码, 但是我们写代码的时候出于源码阶段还没编译呢, idea当然识别不出来Lombok的注解生成一些get set方法了。@Component: 在类外标识, 可以让spring帮我们管理这个类(Bean)学习注解就一定要学习java的反射, 有关注解和反射的知识可以查看我的另一篇。的时候可以在配置文件中动态的开关,但是sout的内容需要。

2024-01-09 21:39:26 1332

原创 开发基础----牛客SQL速成

如何使用非聚合字段在MySQL中,使用非聚合字段的方法非常简单,只需要在SELECT语句中将需要查询的字段列出即可。我们有一个学生表,其中包含学生的姓名、年龄、性别、班级等信息,我们需要统计每个班级的学生数量,那么班级字段就是聚合字段,而姓名、年龄、性别等字段就是非聚合字段。查找每个学校用户的平均答题数目(说明:某学校用户平均答题数量计算方式为该学校用户答题总次数除以答过题的不同用户个数)根据示例,你的查询应返回以下结果(结果保留4位小数),注意:结果按照university升序排序!

2024-01-09 13:36:34 1297

原创 手把手教学git-idea在实际开发中如何使用(适用于包装/实习同学)

当前git主流的使用方式有可视化工具和git命令行, 这里主要介绍可视化工具(idea中的git)的使用方法, 其他比较好用的可视化工具还有SourceTree图一图二图三图四合并代码解决冲突:合并代码我知道的方法有三种rebase:相对于merge来说比较清爽merge图四中的樱桃图标(3.优选)一般点击合并代码后需要解决冲突:图五图六大家根据自己的需求参考我的注解,不会的可以评论区留言,我知道一定会给大家解答,同时也希望大佬们留下对我博客的一些建议。

2024-01-08 20:04:11 376

原创 vim和vscode一些快捷键(mac版本)

vim的配置文件2的优先级高vscode快捷键。

2024-01-06 21:01:47 576

原创 Redis黑马点评业务总结(含mac m1pro | windows11 wsl2 ubuntu环境配置 持续更新中~)

还要将数据配置文件里driver-class-name: com.mysql.jdbc.Driver修改为如下driver-class-name: com.mysql.cj.jdbc.Driver;视频里用的是虚拟机,但我不想配虚拟机,太臃肿了,我选择docker这里我用的是OrbStack,这款软件使用的是rust编写,性能占用低(相比于dockerDesktop)docker拉取redis 和 mysql镜像,注意常规镜像pull下来run后使用的是rosetta转译,性能会下降.后访问8080无效,

2024-01-05 16:20:15 1242

原创 linux系统编程笔记

当程序运行时,如果需要调用动态链接库中的函数,它并不直接使用函数的地址,而是通过@plt引用间接调用该函数。lstat和stat功能一样,但是lstat不具备穿透符号链接的功能,比如我想查看一个链接文件file1的信息,stat会查询它链接的文件file2的inode,而lstat可以查看file1文件的信息。因此,第二种写法是正确的,因为它为struct stat类型的变量sd分配了内存空间,并将其地址传递给了stat函数,使得stat函数可以将文件状态信息存储到正确的位置。# 《02 文件与目录》

2024-01-04 13:43:11 1388

原创 c++_STL容器总结

vector是一个单端动态的数组v.begin():获取容器的起始迭代器(指向第0个元素)v.end():获取容器的结束迭代器(指向最后一个元素的下一个位置)还记得之前说的一个容器对应一个迭代器吗?比如这里vector::iterator是vector这个容器的迭代器;通过vector::iterator it = v.begin()这样的方式获得可以把迭代器看做指针但不要单纯的认为它是指针一旦遇到复杂的迭代器 it -> name可能不识别,因此推荐用(*it).name。

2024-01-02 20:21:47 948

原创 算法基础-dfs的经验

我总感觉dfs和递归是一个东西。

2023-10-20 19:51:23 232

原创 算法提高-二分图

染色法能否正确染色是否存在奇数环。

2023-10-09 20:46:57 75

原创 算法提高-最近公共祖先

很裸的一道最近公共祖先的题目。

2023-10-09 20:44:39 103

原创 算法提高-差分约束

【代码】算法提高-差分约束。

2023-10-09 20:43:36 69

原创 算法提高-AC自动机

AC自动机其实就是Trie+KMP,AC自动机还可与稍微扩展一下,扩展成Trie图的形式(每次fial的时候可以一步到位,不需要一步一步慢慢跳)优化到真正的线性复杂度。

2023-10-09 20:42:33 66

原创 算法提高-平衡树

treap相当于一个BST+Heap,treap上的Node比BST多维护一个信息——Heap的val,即他的key既要满足BST(他key大于左节点且小于右节点)他的val也要满足Heap(this.val大于左子节点和右节点的val)。这里的val是一个随机值,key+val的组合可以让我们这颗树变成一个唯一确定的二叉搜索树:比如我要找根节点,我直接找val最大的节点,那么又因为BST当前节点的左边的key一定小于当前节点,当前节点的右边的key一定大于当前节点,可以让我们整个递归过程是一个有序的。

2023-10-09 20:42:13 54

原创 算法基础-数学知识-容斥原理、博弈论

本题本质上就是一个枚举所有答案的过程,那么我们当然可以用dfs搜索到所有可能的方案。容斥原理可以画一个韦恩图来看各个集合的关系。

2023-09-07 09:41:22 362

原创 算法基础-数学知识-高斯消元、求组合数

【代码】算法基础-数学知识-高斯消元、求组合数。

2023-09-06 20:15:42 280

原创 算法基础-数学知识-欧拉函数、快速幂、扩展欧几里德、中国剩余定理

(目前我不是很理解,但是可以这样理解:a和b的最大公因数是1,即1作为除数和b作为除数时,对于被除数a来说余数是一样的,即1/a的余数和b/a是一样的,即。欧拉函数 =>费马定理 =>快速幂实现费马定理计算结果。互质就是两个数的最大公因数只有1,体现到代码里面就是。1 2 4 8成指数倍增长 log的时间复杂度。欧拉函数的作用是求1-n与n互质的个数。线性筛 + 欧拉函数(有一点推公式)线性同余方程用扩展欧几里德定理求解。

2023-09-04 22:21:52 744

原创 算法基础-数学知识-质数、约数

埃及筛虽然用的不多,大多使用线性筛,但是埃及筛的思想很重要。在埃及筛上优化了一下,每个数字只会被筛掉一次,因此是线性的。递归到最后就是 x和0的最大公约数就是x。AcWing 866. 试除法判定质数。AcWing 867. 分解质因数。计算个数的时候为什么要加1。

2023-09-04 09:39:46 308

原创 算法提高-可持久化数据结构

只有在操作过程中拓扑序不变的数据结构才可以做可持久化(参考y总教学视频的开头)

2023-08-28 21:26:04 63

原创 cf暑假训练 1700-1800 day3(待补)

我们的目标就是排序后二分一个合法的(check函数的目的就是判断是否合法)最长的子段的位置,这段子段可以合成一条链。抽象: 每个影片都是一条链子,我们预设每个影片下载完都需要单独看一下,即单独需要1分钟。哎,不会推公式咋办,得多练了。吧,我应该写的没他好。

2023-08-16 11:11:13 91

原创 算法提高-线段树

1.19线段树维护的是区间上的属性:query的本质就是将要查询的区间[l,r]不断切割,最后由我们预处理好的区间组成,答案也从这些预处理的区间中收集。

2023-08-14 16:23:13 96

原创 cf暑假训练 1700-1800 day1

这题好像要用线段树,主席树啥的,题解在洛古有,很清楚。思路: 就是搜索,但是用val[]验证结果是我没想到的。两个操作把当前的字符串变成一个非递减的字符串。不知道为什么一直wa,明明和题解写的差不多。其实就是一道贪心的题目。

2023-08-13 13:43:53 179

原创 算法提高-树状数组

事实上能写出这种代码还是没有理解树状数组的作用是啥,树状数组的作用就是区间求和和单点修改,使得区间求和和单点修改的复杂度都不至于太慢。因为多维护一个i * b[i], add函数里面的c可能会爆int,所以要强转一下。树状数组擅长的是单点加然后求区间和,本题是区间加然后求单点和;前缀和的区间求和复杂度是1,单点修改的复杂度是n;数组的区间求和复杂度是n,单点修改复杂度是1。树状数组的区间求和和单点修改的复杂度都是。差分数组b[]和原数组a[]的关系。

2023-08-05 19:10:29 421

原创 cf暑假训练 1700-1800 day2

本题用线段树或者树状数组或者栈都行,只要能获[l,r]上的最大值即可。

2023-08-05 14:45:18 130

原创 算法提高-动态规划-斜率优化DP

斜率没有单调性了,本质上我们是想从我们维护的队列里面找一个斜率比当前要加进去的f[i]的斜率sumt[i] + S稍微大一点的数f[j],来进行状态转移,但是t可以取负数后,斜率sumt[i] + S不是随着i增加而单调递增的了,我们也不能在任务安排二中那样查找的时候删除一些可能用不到的状态了,每个状态都可能用到。我们要在队列里面找一个斜率----这个斜率比我当前要加进去的f[i]的斜率sumt[i] + S稍大一些,这样我的f[j]的截距最小,也就是含+f[i]的式子值最小,即f[i]最小。

2023-07-23 17:14:18 125

原创 算法提高-动态规划-单调队列优化DP

这题的队列长度最小值(最少空几题)是我们自己不断二分试出来的,二分判断的性质就是如果为了空limit题至少需要多少分钟去写题目,看看这个时间有没有超过题目给的时间,没超过题目给的时间就是合法的。注意hh = 0,tt = -1 tt = 0初始化的时候队列有什么不同,主要还是要理解队列的实际意义。关于单调队列的初始化。

2023-07-23 14:40:06 88

原创 算法提高-动态规划- 数位DP

这题挺难的,和之前的思路大致一样,但是细节上有很多不同点。这题我觉得最好结合辰风的题解去看,而且有个bug。这题不知道为啥我用vector实现就不行。我只能说模运算博大精深。数位dp是有模版和套路的,

2023-07-23 08:36:10 157

原创 算法提高-动态规划-树形DP

依赖背包问题,选择子节点必须选择它的父节点。战略游戏是每个边都要有人看守,本题是每个点都要有人看守。这题的input很恶心。

2023-07-21 18:24:40 67

原创 算法提高-动态规划-区间DP

这题遍历的时候下标从1开始,数组大小要开到9,不能是8,之前开8一直se,不过我好像知道了什么是记忆化搜索了,应该是剪枝的一种。最经典的区间dp问题,先枚举len再枚举左右端点,这样的原因是可以吧每个状态都表示出来不漏掉每一个状态。同时这题也可以用记忆化搜索的思想过掉,但是我赶进度就pass了,因为我还不知道啥是记忆化搜索。这题我们应该学会的是如何在dp决策(赋值)过程中记录我们的方案。本题代码模版就是区间dp的代码模版但是。这一段我说实话没看懂。

2023-07-21 08:57:51 38

原创 算法提高-动态规划-状态压缩

2023-07-20 17:41:27 82

原创 算法提高-动态规划-状态机模型

(如果不想等j = ne[j],如果相等 j ++ ),T串中的每个位置j在状态机中能跳到哪个位置完全取决于S串中位置i上的字母,s串上位置i的字母有26种取值方式,因此状态机中m个点有26种不同的跳跃方式,状态机的图中一共有26 * m条边(可能会有重边),我们只要在入口0处跳。回到状态机的定义,i的每个字母选择对应T串中的一个位置,本题中合法的位置为T串的0~m - 1(位置m不合法,0是我们自己定义的一个都不匹配的时候的位置)共m个位置,因此我们回忆kmp算法模版,次并且最终不跳到位置m即可。

2023-07-19 20:22:20 1163

原创 算法提高-动态规划-背包问题

看本博客的时候先去看这篇中关于背包体积至多是j,恰好是j,至少是j时的初始化问题,因为dp问题最重要的就是初始化、确定初始状态、目标状态和状态转移方程,再加上一个遍历顺序和优化吧。

2023-07-18 07:53:16 88

原创 算法提高-图论- 有向图的强连通分量

这题最难想的是求出来连通分量后怎么处理,为什么最少需要将一个新软件直接提供给多少个学校,才能使软件能够通过网络被传送到所有学校的答案是入度为0的连通分量数。为什么最少需要添加几条新的支援关系,使得将一个新软件提供给任何一个学校,其他所有学校就都可以通过网络获得该软件?的答案是统计该图中连通块出度入度的最大值。

2023-06-22 17:03:22 349

原创 算法提高-搜索-DFS之连通性模型 DFS之搜索顺序

DFS有两种保存结果的方法,1.保存在全局(马走日),2.保存在dfs里面返回(暂时我还不会)这题debug了好久,根本原因是我的dx和dy写错了。DFS只能保证可以搜到,但是不能保证是最短的。dfs的时候如何用全局变量收集结果。

2023-06-21 21:40:21 323

原创 算法提高-图论- 无向图的双连通分量

本篇章的内容我的学习大多已开在算法进阶指南这本书和题解(算法进阶指南中有关搜索树的概念解释的特别好),主要笔记都在算法进阶指南中,代码上传的是一篇题解里面的,这位博主的注释写的特别好。

2023-06-21 21:39:28 175

原创 算法提高-图论- 负环

第一种方法如果每个点入队n次,每次入队也要遍历n次,那么时间复杂度就是n。第二种方法时间复杂度是n,只要发现最短路边数>=n就说明有环了。这是一个01规划 + 图论问题。本博客主要介绍spfa求负环。

2023-06-12 13:49:41 961

原创 算法提高-图论- 最小生成树的扩展应用

利用虚拟源点建图和原题的题意是等价的,因此我们使用虚拟源点建图套最小生成树的模板。次最小生成树:有两种,一个是相同的权值,另一种是绝对次小生成树,权值是第二小的。这题的dfs我是有点晕了,就因该weight是累加的才对呀。求次小生成树有两种方法:第二种方法比较全能。

2023-06-11 22:27:35 659

原创 算法提高-图论- 最小生成树

但如果题目说了边权为正或者负数,那么就不是最小生成树了,极端一点所有边都是负的,那么我们为了代价最小肯定是所有边都选。和上题一摸一样,但是题意要求的out看起来需要特别处理,其实只要想清楚kruskal的性质就好。题意就是求最小生成树,因为边权都是正数,那么我们多选一条边必然会导致我们的代价增大。

2023-06-11 11:42:17 1167

空空如也

空空如也

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

TA关注的人

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