自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯Java组国赛G题(01背包问题的变形)

表示只考虑前 $ i $ 个物品,背包容量为 $ j $,并且还没有使用魔法的情况下的最大价值。对于该状态的转移,因为这一状态是未使用魔法的,所以转移方程同01 背包fij0fi−1j0当jwimax⁡fi−1j0fi−1j−wi0vi当j≥wif[i-1][j][0] & \text{当 } j < w[i], \\

2025-03-28 16:31:42 635

原创 【Linux】Linux进程状态与进程优先级(新)

在操作系统中,⼀般会存在⼀个进程状态转换图,例如下图:整个过程中涉及到五个基本进程状态:1.创建(new):表示进程创建2. 运⾏(running):表示进程正在被执⾏3. 等待(waiting):表示进程正在等待具体事件发⽣,也被称为阻塞状态4. 就绪(ready):等待被调度器调度执⾏5. 终⽌(terminated):进程完成执⾏。

2025-03-19 20:25:16 638 1

原创 IPC 进程间通信(一):管道(匿名管道&进程池)

进程可以通过 读/写 的方式打开同一个文件,操作系统会创建两个不同的文件对象 file,但是文件对象 file 中的内核级缓冲区、操作方法集合等并不会额外创建,而是一个文件的文件对象的内核级缓冲区、操作方法集合等通过指针直接指向另一个文件的内核级缓冲区、操作方法集合等。这样以读方式打开的文件和以写方式打开的文件共用一个内核级缓冲区进程通信的前提是不同进程看到同一份共享资源所以根据上述原理,父子进程可以看到同一份共享资源:被打开文件的内核级缓冲区。

2025-03-18 20:49:52 847

原创 Linux中输入和输出基本过程

前面在如何理解Linux一切皆文件的特点中提到为了保证在Linux中所有进程访问文件时的方式趋近相 同,在f ile 结构体中存在一个 files_operations 结构体指针,对应的结构体保存所有文件操作的函 数指针(这个结构体也被称为操作表)每一个f ile 结构体中除了有自己的操作表以外还有一个文件的内核级缓冲区,这个缓冲区不同于语言层 面的缓冲区,在调用底层系统接口的读或者写时,会有一方先将内容保存到该缓冲区,再将内容移动到 指定设备。

2024-12-16 20:58:04 1210

原创 Linux文件操作基础

在Linux第一章提到过, 在Linux中,一切皆文件,而文件由文件内容和文件属性组成,在C语言中可以 使用相应的接口打开文件,例如 fopen 函数。

2024-12-13 15:30:18 1381

原创 【重拾算法第一天】质数&&约数&&欧拉筛 埃氏筛&&GCD

质因数(Prime Factor)是指一个整数的质数因子。换句话说,质因数是能够整除该整数的质数。每个大于1的自然数都可以被唯一分解为质因数的乘积,这称为质因数分解。i > t;return 0;

2024-10-21 17:26:33 600 3

原创 【Linux】Linux进程地址空间

RWX 属性:代表虚拟地址对应的物理地址是否具有读(R)、写(W)和执⾏权限 (X)。前⾯提到,每⼀个进程地址空间区域都由指定的起始值和终⽌值进⾏划分,⽽这些区 域有的是可以写,有的不可以写只能读,但是对于物理内存来说,绝⼤部分的空间都 是可以写的,所以对于限制指定的物理地址是否可以写⼊就是通过 RWX 属性进⾏控制例如,前⾯学习到的栈区和堆区,在程序代码运⾏时,可以在栈区和堆区申请空间并 进⾏写⼊,但是对于字符串常量等具有常性的值就不可以进⾏随意修改和写⼊。

2024-10-19 22:26:23 1438

原创 【Java】Java面向对象与方法

在Java中,方法即为,Java中的方法定义遵循下面的通用格式是否需要返回类型和形参列表需要看该函数的功能,具体思路可以参考C/C++中定义函数的方式。

2024-10-17 18:41:56 765

原创 【Linux】Linux命令行与环境变量

在Linux下输⼊的命令⾸先会被Shell拿到。前⾯提到⽗进程和⼦进程的代码是共有的,但是⼆者数据是各⾃独⽴的,但是数据独 ⽴实际上只会建⽴在其中⼀个进程修改了数据,如果⼆者都是对变量进⾏只读不写, 那么也没有必要单独为两个进程开辟两个数据空间对于上⾯的情况亦是如此,直接在终端上执⾏的进程,其⽗进程都是Shell,并且⽗ 进程和⼦进程都只是以只读的⽅式访问 main 函数的参数,所以就不会出现两个数据 空间。从上⾯的过程中也可以看出,在设计操作系统、编程语⾔等时,相互都是存在依赖关系的。

2024-10-17 17:18:06 994

原创 【Linux】Linux进程状态与进程优先级

在操作系统中,⼀般会存在⼀个进程状态转换图,例如下图:整个过程中涉及到五个基本进程状态:1.创建(new):表示进程创建2. 运⾏(running):表示进程正在被执⾏3. 等待(waiting):表示进程正在等待具体事件发⽣,也被称为阻塞状态4. 就绪(ready):等待被调度器调度执⾏5. 终⽌(terminated):进程完成执⾏。

2024-10-15 17:49:51 1050

原创 【Java】Java数组类型

在Java中,数组属于引用数据类型,并且也属于一种对象,所以需要使用new创建对象。

2024-10-14 23:07:11 1349

原创 【Java】C++转Java基础知识

在Java中,JDK称为Java开发工具包(Java Development Kit),包含了Java开发需要使用的工具包,前面的版本中JRE和JDK是分开的两个文件夹,从Java9开始,JDK中还包含了JRE(Java Runtime Environment),包含了Java运行的虚拟机JVM和其他,而,原因是Java9引入模块化运行,可能不是每一次的代码运行都需要完整的JRE,根据需要加载可以提高运行效率。在Java中,除了提供了C/C++中存在的算术右移,还提供了无符号右移,使用。

2024-10-13 22:44:18 902

原创 【Linux】Linux进程基础

进程的本质是在计算机内存中运⾏的程序,但是这⼀个概念太过于⼴泛每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

2024-10-13 14:25:50 1164

原创 【Linux】操作系统基础

冯诺依曼体系结构如下:在上图中「输⼊设备」和「输出设备」⼀般被称为计算机的外设,⽽「存储器」在冯 诺依曼体系结构中表示「内存」输⼊设备⼀般包括:⽹卡、磁盘、键盘、触摸屏等输出设备⼀般包括:⽹卡、磁盘、⿏标、触摸屏、显示器(⾮触摸屏)等。

2024-10-12 19:58:51 618

原创 【Linux】Linux下的Makefile基本操作

clean:第⼀⾏中的代表依赖关系,code表示⽬标⽂件, 赖⽂件列表中的⽂件,第⼆⾏的 code.c 表示依 gcc -o code code.c代表依赖⽅法(指令)第三⾏中的.PHONY表示⽣成⼀个伪⽬标,clean表示伪⽬标的名字(可以类⽐ 变量名)第四⾏及第五⾏与第⼀⾏及第⼆⾏含义⼀致,表示依赖关系和依赖⽅法,⽽因为clean没有需要依赖的⽂件,所以clean:后没有任何依赖⽂件列表⽂件依赖关系:表示两个⽂件之间构成的⼀定关系,⽐如⽗⼦关系。

2024-10-11 19:12:12 1909

原创 Codeforces Round 943 (Div. 3)补题

【代码】Codeforces Round 943 (Div. 3)补题。

2024-10-11 15:42:51 420

原创 codeforces- 973-div2----补题

思路:简单的模拟 + 木桶效应。

2024-10-11 15:06:55 179

原创 【图论入门】图的存储

是图论中用于表示图(Graph)结构的一种重要,特别适用于表示顶点之间连接关系的图形。在计算机科学和数学领域,它被广泛应用来编码无向图和有向图的信息。

2024-08-31 13:13:10 1609 2

原创 【STL】红黑树的全面探索与红黑树的实现

红黑树节点的定义通常包含以下几个关键部分:红黑树的节点结构与二叉搜索树和AVL树差别不大,最大的差别就是加入了一个新的存储点——颜色因为⿊⾊节点的个数可以决定⼀条路径的⻓度,假设⿊⾊节点的个数为 h ,则最短路径的⻓度也为 h ,满⾜第⼆条规则时,红⾊节点的 个数不会超过⿊⾊节点( 1 个或者 h 个),从⽽最⻓路径的最⼤⻓度为 2h ,因为红⾊节点是在⿊⾊节点出现后才会出现。如果按照下图的插⼊⽅式导致红⾊节点连续出现违反了规则⼆,此时最短路径的⻓度的两倍会⼩于最⻓路径的⻓度,从⽽打破了红⿊树的平衡。

2024-08-28 17:22:11 1192 2

原创 【STL-AVLTree】AVL 树的实现

二叉搜索树在某些极端情况下可能会退化,为了解决这个问题,引入了AVL树(平衡搜索二叉树中的一种)控制二叉搜索树的不平衡情况,插入一个新节点后,控制每一个节点的左右子树高度差的绝对值不超过1之所以控制绝对值不超过1而不是不超过0是因为只有在满二叉树的情况下才可以满足每一个节点的左右子树高度差的绝对值不超过0,为了满足普遍性,选择绝对值不超过1一棵AVL树具有以下的特点:每一个节点的左右子树都是AVL树左右子树高度差的绝对值(通过平衡因子判断)不超过1绝对值不超过1,包括-1、1和0。

2024-08-25 15:22:45 639 2

原创 【STL】二叉搜索树的讲解与全面实现

K _key;

2024-08-20 19:41:14 1163

原创 【C++继承】赋值兼容转换&&作用域&&派生类的默认成员函数

由上面我们可以看到Person是父类,也称作基类。Student是子类,也称作派生类1.基类private成员在派⽣类中⽆论以什么⽅式继承都是不可⻅的,这⾥的不可⻅是指基类的私有成员还是被继 承到了派⽣类对象中,但是语法上限制派⽣类对象不管在类⾥⾯还是类外⾯都不能去访问它。2.(★)基类private成员在派⽣类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派⽣类中 能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。

2024-08-16 13:22:04 973

原创 【算法】并查集的介绍与使用

find()函数用于确定一个元素所在的集合的代表元素或根节点。它通常通过路径压缩优化来提高效率。开始时每个集合都是一个独立的集合,并且都是等于自己本身下标的数例如:如果是M操作的话那么就将集合进行合并,合并的操作是:所以3的祖宗节点便成为了5此时以5为祖宗节点的集合为{5,3}如果要将p[9]=9插入到p[3]当中,应该找到3的祖宗节点,然后再把p[9]=9插入其中,所以p[9]=find(3);(find()函数用于查找祖宗节点)

2024-08-14 16:15:20 1279 2

原创 【STL模板进阶】非类型模板&&类模板打印&&特化&&分离编译

1)优点1、模板复用了代码,但本质上编译器会帮我们生成实例化的代码,只是减少了人工的消耗,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2、增强了代码的灵活性(2)缺陷1、模板会导致代码膨胀问题,也会导致编译时间变长2、出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-08-14 12:16:37 902

原创 priority_queue的介绍 && 仿函数

1.优先队列是⼀种容器适配器,根据严格的弱排序标准,它的第⼀个元素总是它所包含的元素中最⼤的。2.此上下⽂类似于堆,在堆中可以随时插⼊元素,并且只能检索最⼤堆元素(优先队列中位于顶部的元素)3.优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供⼀组特定的成员 函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4.底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类5.标准容器类vector和deque满⾜这些需求。

2024-08-13 17:28:52 819

原创 【STL】stack/queue && 容器适配器 && deque

1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作。

2024-08-13 15:36:45 856

原创 【STL】list容器的深度剖析及底层实现

方式1:通过.操作符直接访问结构体的成员变量(一般不这样访问数据)。//ok方式2:通过重载->运算符,对结构体指针进行解引用。//ok。

2024-08-11 15:02:38 863

原创 【算法】 单调栈 + 单调队列

算法原理:用单调递增栈,当该元素可以入栈的时候,栈顶元素就是它左侧第一个比它小的元素。

2024-08-07 13:09:29 616

原创 【STL】 vector的底层实现

此外,insert的参数pos是对实参的拷贝,形参的改变不会影响实参,所以外部的实参也会失效,但是我们也不能通过引用传参,因为其迭代器返回的是临时拷贝具有常性不能通过引用传参,所以这里我们就可以通过控制insert函数的返回值来解决,我们会返回更新后的迭代器,这样就可以访问该位置了。使⽤reserve()函数可以更改调⽤对象的capacity的⼤⼩,注意,如果指定⼤⼩⼩于当前的capacity时,则不会做任何 处理。的问题(野指针),所以要提前规避,记录好pos相对位置,然后再即时。,否则就会出现随机值;

2024-08-05 20:02:20 1218 2

原创 【STL】String的底层构造

【代码】String的底层构造。

2024-08-05 12:06:26 536 9

原创 2022 RoboCom省赛题目解析

解析: 这个也是一个很简单的模拟,注意更新他的服药时间。题目解析:这就是一题很简单的模拟,直接上代码;

2024-07-11 23:01:58 308 1

原创 C++之打开继承的大门

下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。1.基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私 有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面 都不能去访问它。2.基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在 派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。

2024-07-09 21:38:26 756

原创 String 的简单OJ题

int main()// 不要使用cin>>line,因为会它遇到空格就结束了return 0;

2024-06-05 18:21:20 263

原创 二叉树的OJ题

【代码】二叉树的OJ题。

2024-06-04 19:01:25 327

原创 STL <string>--------String的OJ题目

【代码】STL <string>--------String的OJ题目。

2024-05-16 12:39:29 281 3

原创 Python-----容器的介绍以及操作

列表和元组都是日常开发最常用到的类型. 最核心的操作就是根据 [ ] 来按下标操作. 在需要表示一个 "序列" 的场景下, 就可以考虑使用列表和元组. 如果元素不需要改变, 则优先考虑元组. 如果元素需要改变, 则优先考虑列表.字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的. 需要表示 "键值对映射" 这种场景时就可以考虑使用字典.以下就是我C++ 入门python的一些基础语法的知识,欢迎兄弟们品尝。

2024-05-10 09:23:01 1460 12

原创 Linux基本指令----初级

常用选项:-p, --parents 可以是一个路径名称。-a 或--time=atime或--time=access或--time=use只更改存取时间。-m 或--time=mtime或--time=modify 只更改变动时间。-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。例如,使用 ls -a -l的指令,是显示当前目录下的所有的文件。语法:rm [-f-i-r-v] [dirName/dir]-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

2024-04-25 13:03:30 639 1

原创 C++类和对象-----中篇

如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员 函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。对于Date类,可以通过 Init 公有方法给对象设置日期,但如果每次创建对象时都调用该方法设置 信息,未免有点麻烦,那能否在对象创建时,就将信息设置进去呢?构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证 每个数据成员都有 一个合适的初始值,并且在对象整个生

2024-04-23 16:52:40 688 2

原创 基础算法+动态规划+贪心每日一题

基于对C++语法的学习,我觉得算法对现在来说也是非常重要的,以此写下博客来记录每日的算法学习,从基础的开始,有更优秀的解法欢迎各位佬们在评论区分享自己优秀的解法。常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。贪心算法是一种常见的算法思想,它在每一步选择都采取当前状态下最优的选择,以期望最终能够得到全局最优解。贪心算法通常适用于求解最优化问题,但并不保证一定能够得到最优解。贪心算法的基本思路是通过局部最优解来推导全局最优解。

2024-04-21 18:24:32 1284 5

原创 数据结构之----栈的增删查改

栈是一种先进后出(Last In First Out,LIFO)的数据结构,在栈中,最后插入的元素最先被访问。栈的主要特点包括:1. 只能在一端进行插入和删除操作,这一端叫作栈顶。2. 插入操作叫作入栈(push),删除操作叫作出栈(pop)。3. 栈顶元素是最后插入的元素,也是唯一可以被访问的元素。栈的应用场景包括:1. 程序调用的运行时栈:用于存储函数调用的上下文信息。2. 表达式求值:用于存储运算符和操作数,实现算术表达式的求值。

2024-04-17 08:55:24 876 2

空空如也

空空如也

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

TA关注的人

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