自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2022年12月4日 开学第十四周 树的直径,树的重心

树的直径是指的树的最长简单路,解决的问题是给定一个树形数据结构,求从树最长的简单路,具体实现是使用两次dfs,第一次先以任意一点为出发点,找出距离出发点最远的点,第二次以第一次找到的最远的点为出发点,找出距离第一次为出发点最远的点。树的重心是删除某个点后形成的子树最小(删除重心后,生成的树尽可能平衡),树的重心这周没搞懂,那个动态规划不是很理解。这个性质,不是很理解。

2022-12-11 23:40:17 279 1

原创 2022年12月4日 开学第十三周 再谈可持久化线段树和可持久化权值线段树

这次搞清楚了主席树和可持久化线段树的区别,可持久化线段树是基于线段树的,而主席树是基于权值线段树的一种数据结构。本质二者的可持久化对象不同:可持久化线段树持久化值域,主席树维护权值。主席树非常巧妙,把可持久化线段树修改函数的递归边界改成了左右子节点,从而使每次修改都是从根节点生成一条新的路径,与不牵涉修改的点相连。通过比较新版本的树和旧版本的树的节点插值,根据节点差值决定下一步是向左递归还是向右递归。

2022-12-04 23:39:16 297

原创 2022年11月27日 开学第十二周 再谈权值线段树

线段树:是一种二叉搜索树,把区间划分为以下单元区间,每个单元区间对应线段树的一个叶结点。权值线段树下使用中经常MLE,如果一次开出权值线段树的所有点,则必定会MLE,此时我们就需要使用动态开点的方式来避免MLE。线段树的适用范围很广,可以用来进行在线区间维护和查询区间上的最值,求和,每次更新和查询的时间复杂度为O(logN)。权值线段树:相比于线段树,每个节点用来表示一个区间的数的出现次数。权值线段树最重要的应用是查询所有树的第K大值,或者求第K小值。权值线段树是主席树的基础。

2022-11-27 19:51:45 276

原创 2022年11月20日 开学第十一周 再谈莫队

由于可以在O(1)的时间复杂度下得到[L,R−1],[L,R+1],[L−1,R],[L+1,R]的答案,所以计算[L′,R′]的答案耗时|L−L′|+|R−R′|。具体实现是先对序列进行分块操作,每块的长度为sqrt(n),然后以询问左端点所在的块为第一关键字,右端点大小为第二关键字进行排序,每个区间是由上一区间递推得到,所以单次询问时间复杂度是O(n),但是在块中每次询问l的移动最大为sqrt(n),r的移动总和最大为n,块与块之间的移动最大为n,所以总复杂度为O((n+m)sqrt(n))。

2022-11-20 19:50:57 171

原创 数据结构练习5:02:二叉树的实现

扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树。2.对二叉树进行前序、中序、后序遍历。1.采用二叉链表的方式进行存储。2.构造一个二叉树类。

2022-11-14 17:37:21 128

原创 2022年11月13日 开学第十周树状数组

树状数组是将二叉树的节点换成数组的一种数据结构,但和二叉树在某些方面又有很大差别。因为我要看到了树状数组套权值线段树,我看不太明白,所以分开学,先学习树状数组。3:单点查询后区间修改。

2022-11-13 23:27:31 192

原创 数据结构练习5:01:顺序存储的二叉树的相关算法

number: 代表结点在完全二叉树中的层序编号(根节点编号是1)写出顺序存储的二叉树的前序遍历、中序遍历、后续遍历算法。value: char 型的数据,代表结点的值。参考了@迎风809的代码实现,输入要注意。第一行:二叉树中的结点个数n。第一行为前序遍历序列。第二行为中序遍历序列。第三行为后序遍历序列。

2022-11-11 10:04:23 214

原创 2022年11月06日 开学第九周博客 主席树(可持久化线段树)线段树小结

主席树,即可持久化线段树,我的理解就是,给一棵树,每次修改只修改一条链,也就是两个节点中最多会有一个节点被修改,如果每次修改都新建个树,对数进行备份的话,会让费大量的空间和时间,因为每次只修改一条链,而主席树,就是记录每次修改的这条链,剩余的部分修改前后共享节点。线段树如果排除节点信息很像一棵完全二叉树,但是节点信息存储的是区间和,每个节点一次合并,便形成了一条线段树,线段树可以和dfs一起使用,比如线段树的分治,对于主席树,我最大的感受就是:主席树真的比较难!我这周学会了主席树和线段树的基本操作。

2022-11-06 19:48:18 223

原创 2022年10月30日 开学第八周博客 莫队算法和主席树算法

我认为这两个算法解决的问题相似,都是求区间内不同数的个数,或者是求区间内第k小,第k大的数。主席树:(过不了P1972)从右向左建立主席树,如果一个值还没出现过,则直接插入,否则删除后再重新插入。之后要查询 [l, r] 时,选用 l 位置的主席树,这时树中的数据是 [l, n] 范围内的,因此查询时需要传入 r 作为挡板,仅统计小于等于 r 的个数,这样就可以实现 [l, r] 区间不同数的查询。

2022-10-30 19:41:45 111

原创 Openjudge 栈的基本操作

该行内容在正常情况下,是栈中从左到右存储的数字,数字直接以一个空格分隔,如果栈空,则不作输出;push k是将数字k加入到栈中,pop则是从栈中取一个数出来。给定一系列push k和pop操作之后,输出栈中存储的数字。若栈已经空了,仍然接收到pop操作,栈是后进先出的:把栈也看成横向的一个通道,则push k是将k放到栈的最右边,而pop也是从栈的最右边取出一个数。栈 1 2 -------> 1 2 5 ------> 1 2。接下来n行,每行是push k或者pop,其中k是一个整数。

2022-10-25 15:42:07 677

原创 openjudge用队列对扑克牌排序

1.对于两张卡牌,X1Y1与X2Y2,X1与X2表示A~D,Y1与Y2表示1~9,如果X1与X2不同,那么依照D>C>B>A的方式进行排序。请根据上面的算法,编写一个用队列对扑克牌排序的程序,要求依照上面的排序规则,根据先花色后点数的方法进行排序。先建立9个队列,用于存放点数的大小,将卡牌依点数存放入各自的队列之中,然后再按队列1到队列9依次出队。第一个部分为第一次进队出队的结果,用Queue1:...表示,共9行,结果用空格分隔,下同。将其依次出队后,结果为A4,C1,C4,D3,排序结束。

2022-10-24 08:20:55 203

原创 2022年10月23日 开学第七周博客

其实这段时间不如大一下学期忙碌,虽然课比上学期多,来到信息学院后,学的课程关联性比较的大,不像在农学院的时候,一边学习有机化学,无机化学,一边学习概率统计,线性代数,还学着ACM,程序设计B,课程之间没什么练习,在信息学院学的课程联系比较密切,而且我感觉学习了一门编程语言后,再入门其他编程语言是非常的容易的。Python在日常生活中很有用,用来查谁做了核酸,谁没做,腾讯会议查哪位同学没有进入课堂,都非常的有用。这周继续学习了红黑树,能基本掌握红黑树,开始学习了线段树。树的遍历-前中后遍历。

2022-10-24 00:01:49 170

原创 数据结构练习二:06:集合合并

已知集合A与集合B,且第个集合内数据是唯一的。求A,B集合合并成新的集合C,要求C集合内的数据也是唯一的。并指出C集合的个数。三行,第一行分别为集合A,B的个数。第二行为A集合的数据。第三行为B集合的数据。第二行为C集合的数据。

2022-10-23 13:16:15 164

原创 数据结构练习二:01:整数顺序表的基本运算

第二行:删除第一个元素,输出删除后的所有元素。《数据结构简明教程》上机实验2-基础实验题1。第四行:在第二元素处插入一个新的元素100。顺序输入顺序表A的元素个数及各个元素。第一行:创建顺序表A后,输出所有元素。第五行:输出第一个元素100所在位置。第三行:输出删除元素后顺序表的长度。

2022-10-23 13:15:12 603

原创 数据结构练习二:03:构造有序的单链表

(用0表示输入的结束,0不能添加到链表中)(可以采用结构化的程序设计方法实现,即不必定义类)按顺序输出有序链表中的数据。构造有序(升序)的单链表。

2022-10-23 13:14:00 298

原创 数据结构练习二:04:非递减有序集合合并

巳知线性表LA和线性表LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的元素仍按值非递减有序排列。三行,第一行A,B集合的个数n,m。二行,第一行,集合C的个数k。第二行:集合A的数据;第三行:集合B的数据。第二行:集合C的数据。

2022-10-23 13:12:55 687

原创 数据结构练习二:05:有序的双链表的实现

插入操作(将一个数据元素插入到有序的双链表中,插入之后链表仍然有序,输入数据为0表示插入操作结束)输入链表中的元素,根据输入元素,创建有序双链表(非空的链表,输入数据为0,表示输入结束)双链表的构造函数(非空的链表,输入数据为0,表示输入结束)输入要插入的值(可以插入多个值,0表示输入结束,)输入要删除的值(可以删除多个值,0表示结束,)按值删除节点(考虑有重复值的情况)

2022-10-23 13:11:55 332

原创 数据结构练习三-05:队列基本操作

输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。第一行若干整数(必须满足上述四种类型要求),以-3结束。3、-2: 显示队列所有整数。2、-1: 队首整数出队。输出队列中所有整数。

2022-10-23 12:36:10 148

原创 数据结构练习三-04:括号匹配

给定一个字符串,字符串只包含两种字符:左括号“(”和右括号”)”。请判断这些括号是否能匹配。如果能则输出Yes,不能则输出No。一行,括号序列(一个字符串)

2022-10-23 12:35:11 160

原创 数据结构练习三-03:火车站中的驶出的火车

有编号从1到N的N辆火车等待进入车站,而车站的容量是有限的,需要对火车进行调度。现在车站给出了M个指令,请你输出在完成这些调度指令后,车站中驶出火车编号。第二行为M个为-1或者为1的整数,-1代表出站,1代表入站。只有两种调度指令,进站和出站。一行整数,为驶出车站的火车编号。第一行两个整数,N和M。

2022-10-23 12:34:18 178

原创 数据结构练习三-02:周末舞会

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。k行,每行两个整数n1和m1,表示配对的编号。第一行两个整数n和m,分别为两队的长度。第二行一个整数k,表示舞曲的数目。

2022-10-23 12:33:12 278

原创 数据结构练习三-01:十进制转化为二进制

可以用C++中的STL栈结构来轻松实现它。进制之间的转换是很常见的操作。

2022-10-23 12:31:48 736

原创 数据结构-线性表-集合合并新思路

【代码】数据结构-线性表-集合合并新思路。

2022-10-19 10:40:23 354

原创 2022年10月16日 开学第六周博客

这周看了AVL树和红黑树,基本明白了这两个的基本原理,AVL树能写出来,但不会优化复杂度,红黑树写不出来,还顺便看了莫比乌斯反演(出于好奇),并由此产生了一个疑问,就是为什么电子的自旋量子数只有+1/2 -1/2 两个状态 为什么电子要自旋两圈才能复位,这个是不是和莫比乌斯环之间有什么联系? 还有个疑惑不解的地方,就是这个红黑树和AVL树,题目见的不是很多,见到的大部分题目都是线段树。

2022-10-16 23:00:35 165

原创 数据结构-链式栈的实现

【代码】数据结构-链式栈的实现。

2022-10-14 12:00:08 68

原创 JAVA语言程序设计 循环作业

if(num.contains("7")){//使用String的contains方法查询该字符串中是否包含“7”System.out.println("1-100之间包含7的个数为"+index);--------使用循环完成累计求和、计算器操作------2、需求:使用循环找出1-100之间包含“7”的个数。3、需求:使用循环找出1-100之间7的倍数的个数。-------语句的嵌套应用--------1、需求:使用循环求1-50之间的和。//求1-100之间包含7的个数。//如果包含则让次数+1;

2022-10-13 10:31:36 780

原创 JAVA程序设计 数组作业

【代码】JAVA程序设计 数组作业。

2022-10-13 09:23:25 501

原创 2022年10月9日 开学第五周博客

1.1:树的递归定义:a:空结构是一棵树。b:如果t1.t2.....tk是不相交的树,那么,根节点以t1.t2......tk作为子节点的数据结构也是一棵树c:只有通过a,b产生的数据结构才是树注:和现实生活中的树不同,这里的树是倒过来的,根在顶部。

2022-10-09 23:19:57 171

原创 JAVA程序设计 第三周作业

【代码】JAVA程序设计 第三周作业。

2022-10-09 19:38:39 476

原创 数据结构(三)字符串BF算法和KMP算法

结论: i可以不回溯,模式向右滑动到的新next[j]的算法分析: k=next[j-1](由next[]的 定义可以知道:t0t1…tj-3tj-2) 1. 如果t[k]==t[j-1]或k==-1(不存在长度相同的前缀子串和左子串)则t0t1…tj-3tj-2tj-1,因此 next[j]=k+1,next[j]计算结束 否则, 查找t0t1…否则,从主串S的第1个字符开始和模式T 的第0个字符进行比较, 重复上述过程,直到T 中的字符全部比较完毕,则说明本趟匹配成功;

2022-10-04 15:26:15 223

原创 2022年3月10日 月总结博客

选取的边的顶点是不同的连通分量,且边权值是最小的,所以我们保证加入的边都不使得非连通图有回路,且权值也最小。这样最后当所有的连通分量都相同时,即所有的顶点都在生成树中被连接成功了,我们构造成的树也就是最小生成树了。拓扑排序,简单来说,就是先找到一个入度为0的顶点,然后将和这个顶点心相连的边全部删除,再去寻找下一个入度为0的点,直到得到一个序列。我从拓扑排序开始看,先看了拓扑排序,又看了单源最短路径,最后看了最小生成树。最小生成树,主要有两种算法,Prim算法和Kruskal算法。前者归并点,后这归并边。

2022-10-03 23:06:35 268

原创 数据结构(二)栈和队列(模板实现)

允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。后置条件:如果删除成功,队头减少了一个元素 GetQueue。队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。输出:如果队列为空,返回1,否则,返回0。输出:如果删除成功,返回被删元素值。后置条件:如果插入成功,队尾增加了一个元素。输出:若队列不空,返回队头元素。前置条件:队列不存在。空队列:不含任何数据元素的队列。前置条件:队列已存在。前置条件:队列已存在。前置条件:队列已存在。前置条件:队列已存在。

2022-10-02 23:06:09 671

原创 数据结构(一)线性表(模板实现)

线性表( Linear List )的定义线性表( Linear List )的定义线性表是零个或多个具有相同类型的数据元素的有限序列。数据元素的个数定义为线性表的 长度。长度等于零时称为空表,一个非空表通常记为 L = ( a 1 , a 2 ,……, a n ) 其中, a i ( 1 ≤ i ≤ n )称为数据元素, 下标 i 表示该元素在线性表中的位置或序号, 称元素 a i 位于表的第 i 个位置,或称 a i 是表中的第 i 个元素。1.顺序表。

2022-09-29 21:28:13 732

原创 2022年9月25日 开学第三周博客

1:这周做了什么这周学习了图论算法。学会了在leetcode刷题。2:比赛感悟首先是要英语水平好,现在读题有障碍。其次是要首先判断出这个题应该用什么算法,不能一开始就有错方向,否则会浪费很多时间。最后是要广涉猎,好几个题目,感觉会做,但是写起来就是过不去。

2022-09-25 22:40:31 106

原创 2022年9月17日 开学第二周总结博客

这周每天做了一道题,这周末参加了ACM网络预选赛,我们队做了一个题,个人感觉最大的问题就是理解能力比较低,读题速度比较慢,思路也想的慢。感觉还是投入的时间不够,又没别人聪明。下周争取看完图论,下周每天做三道题。

2022-09-17 22:50:28 186

原创 2022年9月11日 开学第一周总结博客补充

这周学习了图论算法。在做洛谷上的贪心的相关题目(看图论博客做贪心是因为那个题单正好做到贪心)。博客看完了双联通分量和强联通分量。最近还学习了一下Linux内核源码(主要是为了学习c语言)和STL源码,STL我在看Vector。希望能提高编码水平。

2022-09-12 13:11:20 176

原创 2022年9月11日 开学第一周总结博客

我也曾怀疑过我自己,我在这里待上三年,拿不了奖有什么意义,或者说,他们都加入了智慧农业实验室or启航科技,学了看起来很高端的JAVA WEB。我一直告诉自己,不可以用功利的眼光看问题,看我做的事情。从我加入ACM的第一天起,我就很清楚,我在跟一群追求进步,追求卓越的人共事。后来随着时间的流逝,光阴似箭,岁月如梭,我接触的很多同学,都退出了。ACM是什么,我认为是意识到自己的不足,触碰自己的能力边界,学会再面临困境时,依然在未知的知识中摸索,不断去接近正确答案,努力解决问题,不轻言放弃。

2022-09-11 17:28:17 124

原创 暑假训练总结

无论做什么选择,都会有得也有失,绝大多数人都考虑自己失去的,而不是自己得到的。岁月不居,时节如流,不居的岁月和流动的时节,我们都没有办法去改变,这是客观存在的事实,我们对此无能为力,冰冷残酷,但是,我们可以主管能动的利用时间,更加珍惜,节约和有效利用时间。不知不觉,紧张而又忙碌的一年过去了,ICPC作为大学一个自己可以选择自己所学习的东西,一个可以脱离被他人规划所限制,拘束的机会,一个成为有独立思考能力和创造力的转折点,为了自己的未来,必须珍惜这一次失不再来的机会,努力一把,成为自己心中想要成为的样子。

2022-09-03 20:02:18 72

原创 2022年8月29日 暑假第七周总结

这周看了Dijkstra算法,spfa算法,floyd算法,并且做了一些PTA的题。昨天又忘记了写博客了。每周日我弟弟都轮休,来我家占用我的电脑玩英雄联盟。

2022-08-29 09:52:43 70

原创 2022年8月22日 暑假第六周总结

昨天去给别人庆祝考上了大学,回来堂弟又来我家玩英雄联盟,然后我昨天就忘了写博客了。这周学习了最短路径算法,我现在感觉学图论就像高中学习解析几何一样,我决定这一周换个方式,主要以做题为主。学习了最短路径计数——限制条件。

2022-08-22 09:18:18 99

空空如也

空空如也

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

TA关注的人

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