自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一岁就可帅的博客

用于记录自己学习的过程

  • 博客(68)
  • 收藏
  • 关注

原创 【CMake】一、CMake 介绍

CMake 是一个开源、跨平台的构建系统,主要用于软件的构建、测试和打包。CMake 使用平台无关的配置文件 CMakeLists.txt 来控制软件的编译过程,并生成适用于不同编译器环境的项目文件。例如,它可以生成 Unix 系统的 Makefile、Windows 下的 Visual Studio 项目文件或 Mac 的 Xcode 工程文件,从而简化了跨平台和交叉编译的工作流程。CMake 并不直接构建软件,而是产生标准的构建文件,然后使用这些文件在各自的构建环境中构建软件。

2024-09-26 20:27:37 3037

原创 【Linux】信号

进程的信号是操作系统中一种重要的软件中断机制,用于通知进程系统中发生了某种类型的事件。

2024-08-10 14:14:09 652 1

原创 【哈希】:从基础到应用

α是散列表装满程度的标志因子。由于表长是定值,a与“填入表中的元素个数”成正比,所以,α越大,表明填入表中的元素越多,产生冲突的可能性就越大:反之,越小,标明填入表中的元素越少,产生冲突的可能性就越小。实际上,散列表的平均查找长度是载荷因子α的函数,只是不同处理冲突的方法有不同的函数。对于。

2024-08-08 17:45:14 961

原创 了解红黑树:高效平衡二叉搜索树

/ 节点的颜色// 红黑树节点的定义{}// 节点的左孩子// 节点的右孩子// 节点的双亲(红黑树需要旋转,为了实现简单给出该字段)// 节点的值域// 节点的颜色不能有两个连续的红色节点。如果我们将新插入的节点默认设置为黑色,那么插入操作可能会导致树中违反这一性质的情况。通过将新节点设置为红色,我们可以更方便地进行调整,而不会破坏树的黑色节点平衡。

2024-08-07 21:24:13 982

原创 【C++】C/C++内存管理

调用operator new函数申请空间在申请的空间上执行构造函数,完成对象的构造什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。

2024-07-19 18:49:33 1077

原创 【C++】C++拷贝构造引发的无限递归问题及其解决方法

拷贝构造函数是一种特殊的构造函数,用于通过另一个对象来初始化新对象。public:// 复制 other 的数据成员当一个对象以另一个对象为初始值进行初始化时(例如通过传值参数、返回值、显式拷贝等),会调用拷贝构造函数。

2024-06-28 11:08:03 697

原创 【数据结构】二叉树

二叉树是一种树形结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的根节点是树的起点,其他节点通过根节点及其子节点逐层连接形成树状结构。节点(Node):二叉树的基本元素,每个节点包含一个数据元素以及指向其左右子节点的指针。根节点(Root Node):树的起点节点。叶子节点(Leaf Node):没有子节点的节点。子树(Subtree):以某个节点为根的树。

2024-06-26 14:39:51 1056

原创 Cookie-SameSite属性 前端请求不带cookie的问题解决方案

最近遇到了前端请求后端不带cookie的问题,请求时header里面就是没有cookie查看响应应该是这个问题SameSite是一个cookie属性,用于控制浏览器是否在跨站点请求中发送cookie。

2024-06-16 16:17:37 2023

原创 【算法】过桥

接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字。1跳到2,1s 2跳到4,1s 共2s。第一行一个数n(2≤n≤2000)输出一行,表示对应的答案。

2024-05-31 21:49:07 1389

原创 【算法】宵暗的妖怪

值得注意的是,若取两段进行吞噬,反而最多只能获得6的饱食度,并不是最大的。选择[2,4,1]和[4,2,1]这两段即可。饱食度为4+2=6。选择[1,7,2]这一段即可。一个正整数,代表最终饱食度的最大值。

2024-05-31 21:13:08 615

原创 【算法】MT2 棋子翻转

在 4x4 的棋盘上摆满了黑白棋子,黑白两色棋子的位置和数目随机,其中0代表白色,1代表黑色;左上角坐标为 (1,1) ,右下角坐标为 (4,4)。给定两个数组 A 和 f ,分别代表 初始棋盘 和 哪些要进行翻转的位置(x,y) ,请返回经过所有翻转操作后的棋盘。现在依次有一些翻转操作,要对以给定翻转坐标(x,y)(也即第x行第y列)为中心的上下左右四个棋子的颜色进行翻转。

2024-05-31 20:01:37 690

原创 【算法】最少的完全平方数

给定一个正整数n,请找出最少个数的完全平方数,使得这些完全平方数的和等于n。完全平方指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。例如:1,4,9,和16都是完全平方数,但是2,3,5,8,11等等不是

2024-05-29 20:51:47 1122

原创 【算法】dd爱转转

接下来n行,每行n个数,描述矩阵,其中数字范围为[1,2000]接下来q行,每行一个数x(x=1或x=2),描述每次询问。一下来一行一个数q(1≤q≤100000),表示询问次数。读入一个n∗n的矩阵,对于一个矩阵有以下两种操作。第一行一个数n(1≤n≤1000),表示矩阵大小。n行,每行n个数,描述操作后的矩阵。给出q个操作,输出操作完的矩阵。1:顺时针旋180°。

2024-05-28 20:12:09 671

原创 【算法】Angelic Jelly天使果冻

天使想知道前 x 个果冻中,美味度第二大的果冻有多少美味度?注:如果最大的数有两个以上,默认第二大的等于最大的。例如, [2,3,4,2,4]这个序列,第二大的数是4。输出 q 行,每行一个正整数,代表一次询问,输出前x 个果冻中美味度第二大的值。数据范围:1≤q≤1e5,1≤ai≤1e9,2≤x≤n≤1e5。第 i 个果冻的美味度是 ai。接下来的 q 行,每行一个正整数 x ,代表一次询问。前2个数,第二大的是1。前3个数,第二大的是2。前4个数,第二大的是3。前5个数,第二大的是5。

2024-05-28 19:48:16 636

原创 【算法】合并k个已排序的链表

数据范围:节点总数 0≤𝑛≤50000≤n≤5000,每个节点的val满足 ∣𝑣𝑎𝑙∣

2024-05-27 18:49:52 477

原创 【C++】旋转字符串——精准与否,就是屠宰和手术的区别

给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(可以为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同,返回true。再如:如果A=‘abcd’,B=‘abcd’,A切成‘abcd’和''(空串),换位后可以得到B,返回true。:如果A分割开转换位置可以拼成B,那么如果两个A直接合并,一定中间有个B。

2024-05-27 17:27:44 747

原创 【C++】哈夫曼编码:高效的压缩算法

哈夫曼编码是一种用于数据压缩的无损编码方法,由David A. Huffman于1952年提出。它利用了字符出现频率的不均匀性,通过构建最优前缀码,能够有效减少数据的冗余,从而实现高效的压缩。

2024-05-26 20:20:20 763

原创 【C++】牛客 ——DP36 abb

leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列?贡献值可以理解为在这以前区间有多少个 _ x (假设现在 i 位置字符为x)leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”第二行一个长度为 𝑛n 的字符串(只包含小写字母)共有1个abb,3个acc,4个bcc。"abb" 型的子序列个数。第一行一个正整数 𝑛n。

2024-05-26 19:58:08 962

原创 【C++】牛客——HJ52 计算字符串的编辑距离

Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance。把这个操作所需要的次数定义为两个字符串的距离。数据范围:给定的字符串长度满足 1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤1000 1≤len(str)≤1000。给定任意两个字符串,写出一个算法计算它们的编辑距离。每组用例一共2行,为输入的两个字符串。每组用例输出一行,代表字符串的距离。

2024-05-24 20:31:52 653

原创 【C++】牛客——OR64 求和

输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。按每个组合的字典序排列输出,每行输出一种组合。每个测试输入包含2个整数,n和m。

2024-05-24 19:26:00 419

原创 【C++】牛客——美团 奇数位丢弃

对于一个由 0..n 的所有数按升序组成的序列,我们要进行一些筛选,每次我们丢弃去当前所有数字中第奇数位个的数。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。数据范围: 1≤𝑛≤1000 1≤n≤1000 ,本题有多组输入。每组数据一行一个数字,为题目中的n(n小于等于1000)。一行输出最后剩下的数字。

2024-05-24 17:31:28 784

原创 【C++】牛客 ——NC138 矩阵最长递增路径

你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。:通过DFS遍历矩阵的每个单元格,从每个单元格开始搜索最长的递增路径。数据范围:1≤𝑛,𝑚≤10001≤n,m≤1000,0≤𝑚𝑎𝑡𝑟𝑖𝑥[𝑖][𝑗]≤10000≤matrix[i][j]≤1000。1. 对于每个单元格,你可以往上,下,左,右四个方向移动。例如:当输入为[[1,2,3],[4,5,6],[7,8,9]]时,对应的输出为5,方向数组包括四个方向:上、下、左、右。,用于存储从每个单元格开始的最长递增路径长度。

2024-05-23 21:19:08 1026

原创 【C++】牛客——kotori和迷宫

kotori在一个n*m迷宫里,迷宫的最外层被岩浆淹没,无法涉足,迷宫内有k个出口。她想知道有多少出口是她能到达的,最近的出口离她有多远?若有出口可以抵达,则输出2个整数,第一个代表kotori可选择的出口的数量,第二个代表kotori到最近的出口的步数。'k'代表kotori开始的位置,'.'代表道路,'*'代表墙壁,'e'代表出口。可供选择坐标为[4,7]和[6,8],到kotori的距离分别是8和7步。第一行为两个整数n和m,代表迷宫的行和列数 (1≤n,m≤30)若没有出口可以抵达,则输出-1。

2024-05-23 20:50:30 711

原创 【C++】牛客——ISBN号码

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X…共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。

2024-05-23 18:43:58 917

原创 【C++】牛客——JZ38 字符串的排列

例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。如果希望保留原始顺序,并且不介意在内部对元素进行排序,那么第二种方法可能更合适。中存的是所有可能的情况包括重复情况,所以我们要想办法去重操作。要求:空间复杂度 𝑂(𝑛!),时间复杂度 𝑂(𝑛!两种方法的区别:不关心元素的顺序,那么使用。返回["ba","ab"]也是正确的。

2024-05-22 20:56:30 694

原创 【C++】牛客——WY6 合唱团

每个测试数据的第一行包含一个整数 n (1

2024-05-21 20:10:12 1199

原创 【C++】牛客——活动安排

给定𝑛个活动,每个活动安排的时间为[𝑎𝑖,𝑏𝑖)。求最多可以选择多少个活动,满足选择的活动时间两两之间没有重合。我们可以把时间对存在 pair中,把 pair 放在优先级队列中。接下来的𝑛n行,每行输入两个整数 𝑎𝑖,𝑏𝑖。写一个比较 pair 的仿函数,用小根堆比较方式,把最小的放在堆顶。第一行输入一个整数 𝑛。输出一行一个整数,表示最多可选择的活动数。这样我们每次开始时间或结束时间最小的一个。,表示第 𝑖 个活动的时间。,表示可选活动个数。

2024-05-21 18:58:38 756

原创 【C++】牛客——BC157 素数回文

备注。

2024-05-21 17:37:45 559

原创 【C++】牛客——DP59 数位染色

她可以将其中一些数位染成红色。然后她想让所有染红的数位数字之和等于没染色的数位数字之和。我们可以对任意的数选择或者不选择,看是否能够凑出总数组和的一半。如果小红能按要求完成染色,输出"Yes"。将3、4、7染成红色即可,这样3+4+7=1+2+5+6。首先我们可以把这个x的每一位都保存下来放进一个数组中。,我们就需要在这组数中任意选择任意数相加得到。因为要两组数的和相等,所以如果数组的和为。她不知道能不能达成目标。一个正整数 x ,1≤𝑥≤10^18。,肯定不满足,所以直接输出 No。

2024-05-20 19:34:58 461

原创 【C++】牛客——小红的口罩

,每次重复使用时,该口罩的不舒适度会翻倍!第一行输入两个正整数 n 和 k ,分别代表口罩的总数、以及小红最多能忍受的不舒适度总和。小红想知道,自己在不舒适度总和不超过 k 的情况下,最多能用现有的口罩度过多少天?可以证明,无论怎样分配,都无法度过6天且不舒适度总和不超过30。小红每个口罩戴一天的初始不舒适度为 ai。第五天用第二个口罩,不舒适度为12。第一天用第一个口罩,不舒适度为2。第二天用第一个口罩,不舒适度为4。第三天用第二个口罩,不舒适度为3。第四天用第二个口罩,不舒适度为6。

2024-05-20 19:33:26 579

原创 【C++】牛客——春游

首先我们可以计算双人船和三人船中每个玩家的花费,我们要在尽可能的情况下选择单价少的船优先安排。如果剩下一个人,那么就考虑是给他新添一艘船或者拿掉一个a,和之前2个人一起去坐3人船。接下来 T 行每行给出三个正整数𝑛,𝑎,𝑏,1≤𝑛,𝑎,𝑏≤10^9 ,含义如题。说明我们要先尽可能安排三人船坐满,那么与上面类似,我们可能留下。三人船最多坐三人,也可以坐两人或者一人,收费b元。如果恰n%2==0,那就不需要额外安排船,盼望着,盼望着,东风来了,春天脚步近了。双人船最多坐两人,也可以坐一人,收费a元。

2024-05-20 17:03:59 1547

原创 【C++】STL——list介绍

list 是 C++ 标准模板库(STL)中的另一个常用容器,它是一个双向链表,提供了一组丰富的接口来管理元素集合。构造函数list(): 创建一个空的 list。: 创建包含 count 个值为 value 的元素的 list。: 复制另一个 list。: 使用初始化列表创建 list。赋值操作符operator=: 将一个 list 赋值给另一个 list。: 用范围 [first, last) 内的元素替换当前 list 的内容。

2024-04-22 20:14:10 1680

原创 【C++】容器:vector的接口介绍大全

vector():创建一个空的 vector。:创建包含 count 个值为 value 的元素的 vector。:复制另一个 vector。:使用初始化列表创建 vector。:创建一个 vector,其元素由范围 [first, last) 内的元素初始化。operator=:将一个 vector 赋值给另一个 vector。:用范围 [first, last) 内的元素替换当前 vector 的内容。:用 count 个值为 value 的元素替换当前 vector 的内容。

2024-04-17 16:17:05 2638

原创 【C++ 】string——字符串常用函数接口详解

在C++中,string是一个表示字符串的数据类型。它是C++标准库中的一部分,可以通过包含 "string" 头文件来使用。

2024-04-16 14:00:12 1279

原创 【C++】vector的模拟实现

vector。

2024-04-14 17:19:08 472

原创 【C++】string的模拟实现

模拟标准库中的string。

2024-04-12 15:30:32 582

原创 【C++】深入理解 C++ 中的 auto 关键字

我们可以让编译器根据变量初始化表达式的类型来确定变量的类型,而无需手动指定。这样可以简化代码,尤其在涉及模板和迭代器等复杂类型时,更为方便。在 C++11 标准中引入了 auto 关键字,它是一项强大的特性,可以大大简化代码的书写,同时提高代码的可读性和灵活性。关键字用于在声明变量时,由编译器自动推导变量的类型。

2024-04-11 11:55:33 538

原创 【C++】C++入门

缺省参数是指在定义函数时,为某些参数提供默认值。当调用函数时,如果不提供这些参数的值,则函数会使用其默认值。这样做可以使函数调用更加灵活,简化代码。函数重载是指在同一个作用域内,可以定义多个名称相同但参数列表不同的函数。这样做的好处是,可以使用相同的函数名来表示不同版本的函数,根据参数的不同类型或数量,编译器会自动选择合适的函数进行调用。引用是C++中的一种别名,它允许我们为一个已经存在的变量或对象创建一个别名。引用提供了一种更方便的方式来操作变量,同时可以避免不必要的内存开销和复制。

2024-04-10 11:53:38 1299

原创 【C++】深入理解C++命名空间

命名空间是C++中一种用于组织代码的机制,可以将一组相关的名称封装在一起,以避免名称冲突。通过使用命名空间,我们可以将全局作用域内的名称划分为更小的范围,以提高代码的可维护性和可读性。让我们通过一个示例来说明命名空间的用法。假设我们有一个名为Math的命名空间,其中包含一些数学函数。// 定义命名空间 Math// 定义一个常量 PI// 定义一个函数,计算圆的面积std::cout

2024-04-09 17:32:57 865

原创 【Linux】手搓shell

【代码】【Linux】手搓shell。

2024-04-08 21:59:10 1206

软件工程复习笔记思维导图

软件工程复习笔记思维导图期末复习+简答题

2024-06-26

空空如也

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

TA关注的人

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