- 博客(31)
- 收藏
- 关注
原创 每日一题9
最大公约数和最小公倍数问题(3月30日)说明输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数。条件:1. P,A是正整数;2. 要求P,Q以x0为最大公约数,以y0为最小公倍数。试求:满足条件的所有可能的两个正整数的个数。输入格式每个测试文件只包含一组测试数据,每组两个正整数x0和y0(2<=x0<100000,2<=y0<=1000000)。输出
2023-03-30 22:23:57 63
原创 搜索与图论(一)
深度优先:它从初始节点出发,按预定的顺序扩展到下一个节点,然后从下一节点出发继续扩展新的节点,不断递归执行这个过程,直到某个节点不能再扩展下一个节点为止。此时,则返回上一个节点重新寻找一个新的扩展节点。如此搜索下去,直到找到目标节点,或者搜索完所有节点为止。"广度优先搜索"是一种通过逐层遍历所有访问对象,从而找到通过最短节点数到达目标的算法。我的理解就是 一条路走到底直到不能走,然后在倒回上个路口 直到满足退出的条件。广度优先算法的搜索方式:通过逐层遍历所有相邻节点,从而暴力的找出最短路径。
2023-02-12 14:23:40 72
原创 基础算法(四)
a 数组与 s 数组之间满足:s[ i ] = a[ 0 ] + a[ 1 ] + a[ 2 ] + …分析可知:a[ 3 ] + a[ 4 ] + a[ 5 ] + a[ 6 ] = s[ 6 ] - s[ 2 ]所以,我们的 s 前缀和数组为: s[ i ] = a[ 1 ] + a[ 2 ] + …数组b : b[1] ,b[2] , b[3], b[i]数组a:a[1], a[2], a[3], a[n]使得 a数组是b数组的前缀和,b数组是a数组的差分。1.二维前缀和的时间复杂度。
2023-01-20 17:41:28 52
原创 数据结构基础——树
根结点:有⼀个特殊的结点,这个结点没有前驱,我们将这种结点称之为根结点。⽗结点(双亲结点)、⼦结点和兄弟结点:对于ABCD四个结点来说,A就是BCD的⽗结点,也称。这种表示法,给查找某个结点的某个孩⼦带来了⽅便,只需要通过firstchild找到此结点的⻓⼦,树的深度或者⾼度:结点的层次从根结点开始定义起,根为第⼀层,根的孩⼦为第⼆层。这就是⼀对多的关系。然后再通过⻓⼦结点的rightsib找到它的⼆弟,接着⼀直下去,直到找到具体的孩⼦。叶⼦结点:如果⼀个结点没有任何⼦结点,那么此结点就称之为叶⼦结点。
2023-01-20 16:50:15 62
原创 基础算法(三)
(Standard Template Library),是 C++ 标准库的一部分,不需要单独安装,只需要#include 头文件。类型名可以是int、double、char、struct,也可以是STL容器:vector、set、queue。与push_back()无脑在尾部添加元素不同的是,insert()是根据指定位置在vector中插入元素。与clear()简单粗暴清空vector不同的是erase(),删除指定位置的元素。,其中N为vector中原属和元素的个数。vector(矢量),是一种「
2023-01-20 15:50:04 55
原创 基础算法(二)
不管元素在什么情况下都要做这些步骤,所以花销的时间是不变的,所以该算法的最优时间复杂度和最差时间复杂度及平均时间复杂度都是一样的为:O( nlogn )归并的空间复杂度就是那个临时的数组和递归时压入栈的数据占用的空间:n + logn;归并排序算法中,归并最后到底都是相邻元素之间的比较交换,并不会发生相同元素的相对位置发生变化,故是稳定性算法。将步骤1分成的两部分,再分别进行递归分解。要求时间复杂度低于O(n),或者直接要求时间复杂度为O(log n)(左边可能比右边多1个数)归并排序的主要思想是分治法。
2023-01-20 15:25:47 38
原创 数据结构基础——集合
如果 x,y是亲戚,那么 x 的亲戚都是 y 的亲戚,y 的亲戚也都是 x 的亲戚。⽐如上图中的两棵树,就分别对应两个集合,其中第⼀个集合为a,b,c,d,代表元素是a,第⼆个集合是e,f,g,代表结合是e。并查集的实现原理也⽐较简单,就是⽤树来表示⼀个集合,树的每个结点都是集合的⼀个元素,树根对应的那个结点就是该集合的代表。素,可以很快的找到这个元素所在的集合(的代表),以及合并两个元素所在的集合,⽽且这些操作的。树的节点表示集合中的元素,指针表示指向⽗节点的指针,根节点的指针指向⾃⼰,表示其没有。
2023-01-11 20:42:22 64
原创 数据结构基础——二叉树
今天做题下来,体会最深的是结构体首先我们需要会结构体然后可以灵活运用深度优先dfs下面是我会练习的一部分题,一些题我会放题解接下来介绍一下二叉树二叉树是每个结点最多有两个子树的树结构。也就是说二叉树不允许存在度⼤于2的树。它有五种最基本的形态:二叉树可以是空集。根可以有空的左子树或者右子树;或者左右子树都是空。其中只有左子树或者右子树的叫做斜树。
2022-12-30 18:51:55 525
原创 数据结构基础——线性表
在该式中,@ 为表达式的结束符号。n个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。链表的基本思维是,利用结构体的设置,额外开辟出一份内存空间去作指针,它总是指向下一个结点,一个个结点通过NEXT指针相互串联,就形成了链表。
2022-12-29 19:12:44 338
原创 P8780 [蓝桥杯 2022 省 B] 刷题统计
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a道题目,周六和周日每天做 b道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
2022-12-24 16:21:09 404
原创 假期练习——时间复杂度
时间复杂度:程序运行会消耗多少时间。计算时间复杂度的方法如下:1.忽略常数项。2.忽略系数。3.只保留最高项。常见的时间复杂度:从小到大依次是:O(1)
2022-12-24 16:13:36 197 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人