- 博客(62)
- 收藏
- 关注
原创 Codeforces之旅(2)
Oh!No!对于这场比赛来说,我还是没有上 青。其实说来惭愧,在比赛开始前我也刷了不少的题目,但是呢,比完结束之后才知道,对于1200分数以下的题目来说,通常都不怎么涉及数据结构和一些难度比较大的题目。但是,这些都是我现在才知道的,如果你也是和我一样是一个灰名的话,你一定要多注意思考简单的方法去实现问题的解决,同时1200以下分数的题目有时候还会多包涵一些简单的模拟,这也是我们小灰明名需要注意的。这场比下来很遗憾吧,对于Div3的C题,我真的哭死。
2024-11-19 00:59:52
971
原创 从零开始的Codeforces提升之路
对于我来说,看这个分数就知道,我是一个真正的小菜鸡,从现在开始,我将持续更新,我会持续更新,期待一年之后的蜕变,如果获得什么奖状,或者说拿到什么成就的话会及时更新。如果说正在看文章的你也是一个小白的话,不如及时关注一下,如果有时间的话,我会在每一场比赛结束之后都大概的写一下总结,写一下比赛时候的进度。(其实对于现在的我来说的话,每一场比赛有些情况下我都打不完就结束了,因为实在不会)。如果你是大佬的话,也可以关注关注我,指导一下我(大佬求教)。我会尽力做好,快速提升自己。
2024-11-17 16:17:57
1425
原创 【C++】常用数据结构纲要(简易版)
如果让我现在来看的话,数据结构是什么,我觉得就是数据存储的一种方式,在特定条件要求之下存储的数据能够在我们需要的条件下实现高效的优化。换简单的话说,这就是像是,你即使在你自己的书房中找自己的书本,都可能比你去图书馆问图书管理员找到一本特定的书的时间长,因为图书馆存储书的时候是会根据特定的方式去存储(换句话说这时候的数据就像是按照特定的一种数据结构存储,而你自己的却像是没有做过处理的数据所以学习数据结构是为了方便对于不同数据然后解决不同问题时候的加快速度和效率的方式。
2024-10-10 19:48:17
1502
2
原创 【Linux】模拟实现一个shell
对于什么是shell问题来说,这是个好问题😊,但是其实如果你看过我之前的文章的话,应该能准确的理解什么是shell,如果想要看之前怎么介绍的话,就会到之前文章里看一看。
2024-09-29 00:48:44
1486
1
原创 【Linux】基础IO认识(2)
要知道dup2不只是两个整数之间的拷贝,而是文件下标是代表的文件内容的拷贝。当然哪一个是old哪一个是new就需要看函数解释( 我就简单的搜一下这个调用的介绍,想要更深入的了解到话,还是自行搜搜吧)看完函数解释知道。
2024-09-17 15:22:27
806
原创 【Linux】基础IO认知(1)
不止是这些的C语言中的对于代码的修改,在Linux操作系统上的echo进行重定向,也能够对文件内容进行修改,所以输出重定向一定是文件操作,并且每次重定向写入的方式。
2024-08-08 13:30:38
557
2
原创 【Linux】进程替换
反之,只要是能够继续运行了,无论execl返回的是什么,后面的程序都不再是我们之前想要的结果了。创建子进程,目的是让子进程完成任务,之前我们创建的都只能是再父进程的基础上,但是今天我们学习的调用的函数,能够让我们的子进程执行一个和父进程毫不相关的全新程序。函数把一个存在磁盘外设中的代码数据能够运行起来,那就说明其中的exec*要么本身属于系统调的函数,要么就是其中的内核包括系统调用。此时的进程的替换并没有创建新的进程,只不过是直接用老的进程的页表来指向后来调用的代码和数据。
2024-08-06 19:57:32
866
1
原创 【Linux】进程控制
这种状况在现实中也有,就比如说,你去找工作,找到工作之后收到offer之后,对于那个公司来说,在你人还没有到公司报到的时候,就已经算是创建好你的档案了,只有在你真正的抱到结束之后,才算是真正的员工,这里的报道,相当于就是你人去了,相当于上面的数据和代码本体,然后收到offer的时候,算是已经创建了PCB等一系列结构体。status设置的是int的32位,其中低地址的16到第9位置表示的是退出状态,第7到第1位置表示的是终止信号,其中的第8位置,表示的就是core dump标志。,此处表示的是退出信息。
2024-08-05 23:14:37
1003
原创 由浅入深的了解进程(4)---优先级,命令行参数,环境变量
和生活中的概念其实是差不多的。优先级在进程中的定义是指定进程获得CPU资源的先后顺序。如果换一个视角的话,优先级的本质也就是在操作系统中的进程PCB结构体中的一个变量表示的是优先级的先后,用整形来表示,几个不同的进程相互比较整形的大小就能够实现优先级的概念。数字越小的优先级越高。优先级 vs 权限。权限问题是决定能不能,但是你有优先级了,也就是说明你已经能够有权限了。
2024-08-02 22:09:55
916
1
原创 由浅入深的了解进程(3)---进程状态
如果说我们需要存储一个非常重要的1GB的资源到硬盘上,由于之前讲过硬件的速度远远的小于CPU的处理速度,所以说此时存在于内存中的1GB的数据可能大多数情况都是处在S状态,那正巧此时内存严重不足,操作系统一看,这么大内存就站着不用,手起刀落,直接把你kill掉,当硬盘处理完回来看数据的时候发现找不到了,没办法,硬盘只能继续再干其余要存储数据的工作了。磁盘的swap分区中。当我们执行一个可执行程序的时候发现,此时的进程状态是S,可是不对啊,上面说的S不是sleep吗,运行为什么查到的确实sleep的休眠状态。
2024-08-01 18:12:06
969
3
原创 由浅入深的了解进程(2)
上一篇文章中从冯诺依曼体系结构聊起,再到操作系统,如果忘记了之前的这两个知识,可以i回去看一看,现在我们将要重点开始进程了!
2024-07-31 19:03:38
1142
2
原创 由浅入深的了解进程(1)
两台冯诺依曼结构的电脑通过一个相同的软件,利用输入设备写下想要发送的消息,通过存储器经过CPU处理之后,通过网卡(输出设备),发送消息通过网络,发送给异地的兄弟,异地的兄弟通过他的网卡(输入设备),接收到消息之后,再通过存储器在CPU处理下,再到显示器(输出设备),显示在你兄弟的屏幕之上。这样的话,就实现了数据在异地之间的传输,能够让你和你的好兄弟一起在网上聊天。
2024-07-30 21:26:59
1049
原创 Linux中的gdb调试
对于基础代码还是很方便使用的,但是到后期的时候,调试大代码的时候可能就是会有一些难以解决的问题。所以后期的时候,我们就会将Linux远程连接到我们本地的vscode就能够相对于是方便我们的使用。那为什么我还会写这篇文章呢?那是因为即使是有图形化界面能够方便我们去进行一系列的操作,但是对于学习来说,我们还是需要去理解命令行的含义的,需要理解服务器的基本指令的。
2024-07-29 19:13:28
794
1
原创 快速介绍git(Linux)
git1、安装2、版本控制3、git vs gitee&&GitHub(git故事)4、git的操作1、安装很简单,直接sudo yum install -y git2、版本控制故事介绍:你是一个大学生,你上课需要交一分实验报告,教你的老师比较负责,所以说,每次的实验报告他都会看的很仔细,非常的认真看你的报告,所以也比较难通过。正好在这样的基础之上,你有一个室友,你的室友血气方刚,刚刚上大学,很兴奋啊,所以有一次老师刚刚布置完实验报告的作业,他就马上写完去交,可是并不如意。老师说
2024-07-28 19:05:16
1028
原创 Linux的Makefile进度条
不需要定义变量的类型。直接使用。使用之后make也能够直接替换变量内容。那为什么我们需要定义变量呢?就像是在C语言中的宏一样,以后的这个基本就不会改变了,就只是会在定义的时候发生变化,这样能够简化操作。学着学着就能够感受到好处了!
2024-07-28 14:55:32
1242
原创 Linux项目中自动化构建工具-make/Makfile
难道说每次C语言代码写好之后都需要去编写gcc命令,如果有上百个文件去构建的话,那不得麻烦死了。所以有没有简单的做法呢?有!答案就是make/Makefile。
2024-07-26 17:40:54
1072
原创 Linux下Centos7中的gcc/g++
可能对于没有配置过的centos来说,会无法编译成功。为什么呢?那是由于gcc的版本在默认的情况之下是取了一个适中的版本,不算太新,正好又不能编译for循环,所以导致这样不能进行编译。如果想要编译的话,可以根据提示信息,进行改写一下gcc命令这样的话就能够编写成功了。:确定版本的同时,指定生成可执行文件的名称为my.exe(能够自行定义)。
2024-07-26 14:21:16
1599
原创 Linux中vim的基本介绍和使用
如果我面想要在Linux上编写代码的话,我就需要vim来帮助我们编写代码。但是vim并不像是在Windows上的vs集成软件把所有的东西都集成起来但是呢,如果不进行配置的话,vim和其他是相互独立的,vim就是写代码的编辑器,编译代码就是gcc/g++的编译器,调试代码就有gdb的调试器。自动化构建就有make和makefile构建的工具。vim是款编辑器,同时也是多模式的编辑器—命令模式,底行模式,插入模式。简单编译一个hello vim程序。
2024-07-24 15:25:36
1621
1
原创 Linux权限(2)
对于Linux权限讲了很多部分在这篇文章中如果看过的话可以复习,没看过的话一定要看,不然权限的理解就不透彻了。x表示的是可执行,如果有x权限,就是表示一个文件能够执行。可是又有问题了!如果我们将test.c文件利用chmod u+x的话,然后再执行的话确实报错,执行不了。明明不是加上了可执行的x权限了吗?你要执行,前提是你必须要是可执行文件,你是一个可执行文件有可执行权限,你才能执行能执行=具有可执行权限+你是一个可执行文件。所以x(可执行权限)的侧重点是权限,而不是可执行。
2024-07-23 00:57:21
1082
2
原创 dp算法第三天(暑期提升)
根据前两次的dp算法的实践,相信我们已经能够通过dp表示不同的含义能够解决不同的问题。但是这些dp问题对于dp算法来说还是不够,所以接下来继续学习一些关于能够利用dp来解决的问题。
2024-07-20 21:07:30
738
1
原创 Linux热键,shell含义及权限介绍
为了方便能够快速的输入指令,通常利用[Tab]来帮助我们。[Tab]键的作用是具有命令补全和档案补齐的功能。通常为了输入一个指令,我能快要输完的时候按下[Tab],能够快速补齐,能够减少一点时间吧,起始也能够利用[Tab]来帮助我们查看符合那几个开头的指令能有哪些。生活中的例子可以帮助我们理解。VIP才能看最新出来的电影。进学校的宿舍需要刷脸这也是权限。权限就是通过一定的条件拦住一部分,给另一部分人权利,来访问某种资源。来决定有无或者是能不能的问题。
2024-07-16 17:58:05
1016
1
原创 喜欢dp动态规划的第二天(暑假提升)
由于上一期的动态规划我觉的太过于繁琐,所以这次简化一下操作,题目概念解析将不会再写,我直接写题目的意思和直接引导出做法,当然,其中我觉得很重要的地方会讲的深入一点,希望读者能够好好的理解。虽然题目不多,但是其中相对于上一篇文章中的利用dp解决问题的方法有稍微的提升,从一维逐渐向使用二维,从dp表的直接使用到利用hash优化程序。并且从原来的最后一位能够推出前面全部的定差数组,也变成了需要两个末了位置的数才能推导出前面的所有数的转变。
2024-07-16 01:01:50
872
原创 最喜欢dp动态规划的一次(暑期刷题)
所有的问题可能不止一种方法,但是由于是dp专题,只会讲述dp解题的方法。如果需要别的算法可以看看后续的更新。同时,这里的dp算法并不一定是最简单的效率最高的解题方法,可能别的算法更适合更方便。第一次来做一个这样子的解题的文章,可能会有些不好的地方,如果有建议的话可以在评论区留言,我会及时查看并且在下一次的文章中进行改进。
2024-07-15 00:20:25
971
原创 Linux入门指令(2)
相关的Linux指令在先前的文章中有说过,建议是先看前面的文章再继续看这篇文章,这文章中也有包含着大量基础的指令及相关的知识。
2024-07-13 19:41:47
1212
原创 你明白C++中的多态吗?(暑假提升-多态专题)
在最开始,我会讲明白分那么多的小标题的目的就是方便不懂多态的人能够有大概的框架,知道多态的能够有目的的去复习。所以标题分那么多请不要见怪。多多包涵。在这篇文章中已经讲过了C++中的一个重要的特性-继承,想回顾一下的可以点击一下链接,复习复习。接下来我们将进行多态的讲解,其中也有一部分内容和继承比较相似,容易搞混,所以我尽力的讲清楚多态的特点和注意点,如果是继承的问题想不明白的话,可以看看我之前的文章,其中也算是讲的比较详细的。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。
2024-07-10 16:08:43
1058
原创 搞清楚[继承],易如反掌。(暑假提升-继承专题)
派生类和基类的名字是根据程序员自行定义的,无所谓叫什么。其中继承方式有三种,分别是private,protect和public。当然继承方式和访问限定符的共同作用下才能知道成员变量或者是成员函数到底有了怎么样子的改变。基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面 都不能去访问它。基类private成员在。
2024-07-09 17:48:19
979
原创 还没结束!下面是[平衡二叉树之二(红黑树)]
学会了AVLTree和RBTree之后,我就可以不再局限于是二叉搜索树,而是可以利用更厉害的数据结构来帮助我们实现数据的优化,针对特殊的数据也能够有不俗的优化。我们也可以通过这种优化来帮助我们解决一些算法问题,在之后的更新之中会出现类似的解题提升的文章!
2024-07-08 18:20:26
925
1
原创 我知道二叉树一定满足不了你,接下来上场的是[平衡二叉树之一(AVL树)]
由于二叉搜索树在面对一些数据时,会退化并且还会降低搜索效率。因此,俄罗斯的两个数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种能够解决问题的方法。当像二叉搜索树中插入节点之后,如果能够保证每个结点左右子树高度绝对值差不超过1(需要进行旋转调整,当超过1的时候),即可降低树的高度,从而减少平均搜索长度,提高搜索效率。总结来说,AVL树具有以下的特点1、每一个节点的左右子树都是AVL树2、左右子树的 高度差/平衡因子 的绝对值不能超过1。
2024-07-03 15:39:25
1082
2
原创 你渴望知道[二叉树]吗?
又被称为二叉排序树,是一种特殊的二叉树,有着这几个典型的特点。1、若左子树不为空,则左子树上的所有节点的值小于根节点的值2、若右子树不为空,则右子树上的所有节点的值大于根节点的值3、左右子树分别也都是二叉搜索树Tip:不能存在多个相同数值的节点,这种情况下,应该使用multi个二叉树。
2024-07-01 15:26:00
602
原创 C++入门的基础
定义命名空间,需要使用namespace关键字,后面跟上的是命名空间的名字,然后街上一对{},在{}之中即为命名空间的成员。// hehe是命名空间的名字,一般开发中是用项目名字做命名空间名。// 我们上课用的是bit,大家下去以后自己练习用自己名字缩写即可,如张三:zs// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;
2024-02-04 13:39:55
1118
3
原创 寒假每日提升(4)[对于二叉树类的简单问题]
在这篇文章中我简单的介绍了二叉树的定义和一些简单的性质,其中最最重要的,其实我觉得应该是那句话,因此,二叉树是由递归定义的,这句话大大的影响着后面我们解题时候的想法。也需要我们很好的认识和理解递归在解题时的运用。到这里,对于基本的二叉树相关的问题已经解决的,差不多了,在寒假继续进行中,我将继续更新关于二叉树的更深的题目,以及未来的堆类的介绍和相关的问题。大家多多关注。我会逐步更新的。
2024-01-23 23:57:41
1261
3
原创 让二叉树无处可逃
树也是属于一种数据结构,它是一种非线性的数据结构,与栈,队列和链表是不同的存在。由n(n>=0)个有限的结点组成的具有层次关系的集合。至于为什么是树呢?其实按照结构图来看,把一颗二叉树的结构图倒过来就像一颗树了。也就是像这样。1、树都会有一个特殊的结点,称为根节点,根节点没有父节点2、除去根节点之后,其余的结点被分为M(M>0)个互不相交的集合T1,T2,Tm,其中每一个集合又是一棵结构类似的子树。3、因此,树是递归定义的。(在后面的关于树之类的问题上,递归的解决方法占很大一部分)
2024-01-23 15:14:42
995
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人