- 博客(97)
- 收藏
- 关注
原创 1101. 献给阿尔吉侬的花束(bfs找最短路径)
BFS(Breadth-First Search,广度优先搜索)是一种图算法,用于遍历或搜索图中的节点。它从图的起始节点开始,逐层地访问其相邻节点,直到找到目标节点或遍历完整个图。BFS通常使用队列来实现,起始节点首先被放入队列中,然后依次访问其相邻节点,并将这些相邻节点加入队列。接着从队列中取出下一个节点,重复上述过程,直到队列为空为止。BFS的特点是能够找到起始节点到目标节点的最短路径,因为它先访问离起始节点最近的节点,然后依次向外扩展。踢出队列头,并在队列尾插入与对头相关的xxx(往往是相邻点)。
2023-12-24 18:23:00
537
原创 1215. 小朋友排队(权值树状数组求逆序数)
4.query(r)~ 树状数组:原数组区间(a[1],a[r])的和;权值树状数组:原数组区间(a[1],a[r])出现次数。1.权值树状数组的模板与树状数组一样没有变化,但树状数组tr[]中存储的内容以及add和query的含义发生了变化。3.add(x,v)~ 树状数组:是在位置x加上v;权值树状数组:x出现的次数加1。2.tr[]~ 树状数组:存储的是区间和;权值树状数组:存储出现次数。
2023-12-23 12:05:50
416
原创 1264. 动态求连续区间和(树状数组---某个位置加上一个数/求在线(动态)前缀和/蓝桥杯)
【代码】1264. 动态求连续区间和(树状数组--某个位置加上一个数,求在线(动态)前缀和)
2023-12-17 16:59:04
767
原创 1241. 外卖店优先级(蓝桥杯/暴力/优化--暴力遍历 VS 根据输入遍历)
66 时刻时,11 号店优先级降到 33,被移除出优先缓存;22 号店优先级升到 66,加入优先缓存。所以是有 11 家店 (22 号) 在优先缓存中。
2023-12-17 12:39:44
327
原创 1231. 航班时间(整行字符串输入:getline(cin,line))
cin输入时遇到空格会断开,而getline则是整行输入。故需要整行输入时用getline。
2023-12-16 22:50:39
98
原创 AcWing 1229. 日期问题(反向求解)
在19500101到19591231之间寻找:1.满足日期格式的的数+满足可表示为02/03/04的数。特殊格式的输入输出用scanf和printf优于cin和cout。
2023-12-15 19:16:07
81
原创 曼哈顿距离+蛇形走位
4.蛇形走位的二维数组列下标:若行下标为偶,则列下标:j=(x-1)%w;若行下标为奇,则列下标:j=w-1-j。2.1,2,3,4~的连续数字,为与数组下标对应->将所以数字全部减一,从0开始。1.曼哈顿距离->两点矩阵坐标行列差值的绝对值 ->二维数组。3.二维数组行下标:i=(x-1)/w。
2023-12-15 12:39:25
327
原创 区分vector和list两种容器
总的来说,Vector适合需要随机访问元素或在尾部频繁插入和删除元素的场景,而List适合在任意位置频繁插入和删除元素的场景。
2023-12-09 19:49:53
79
原创 继承、多态
不同序列的查找方法。判断某个元素是否存在于序列之中是很重要的操作。不同的序列可以选用不同的 查找方法,例如无序序列一般用顺序查找方法,有序序列一般用折半查找方法。定义 C++类模拟实现各自 不同的查找方法。代码中无明显类的继承层次关系者不得分。你可以如下完成本题: (1)定义 Sequence 类描述一般的“序列”概念,提供 in 函数判断元素是否存在于序列之中。(2)定义 Unordered 类描述无序序列,在 in 函数中以顺序查找方法判断元素是否存在于序列中。
2023-12-09 16:03:39
93
原创 生日备忘录(自定义排序)
实现简易的生日备忘录。温暖的亲情是前进的动力,别忘记在家人生日时送 去祝福。定义类 Member 描述家庭成员,每位家人有自己的姓名 name 和出生日期 birthday,出生日期应描 述为由 year、month、day 组成的 Date 类。在 main 函数中定义数组(或 STL 容器)存放家庭成员对象,并 调用类的成员函数,按照生日先后顺序输出各位家庭成员的信息。
2023-12-09 15:30:04
333
原创 466. 回文日期
1.如果正向考虑,计算两天之间所以的回文数,应该如何枚举?没有明确的进制,那么只能列一个日历,这样会比较麻烦。注意:枚举8位数回文数时我们只需要枚举前4位,后面翻转得到。2.满足日期表示规范的。
2023-11-15 00:12:17
543
原创 1204. 错误票据
使用getline读入一整行时,如果之前写过cin,由于cin中有默认换行,getline会将其也读入,使得字符串类型的变量line的第一个元素是空的。将输入的数据存入数组,从小到大排序后遍历,若 (a[i] == a[i - 1])res1 = a[i]--->重号;若(a[i] - a[i - 1] >= 2)res2 = a[i] - 1--->断号。1.针对上述情况,我们可以先用getline(cin,line)将整行数据(包括空格)先存入字符串(string)变量中。来解析和操作字符串中的数据。
2023-11-12 16:27:04
157
原创 第1关:完整的包装类
1.自增自减运算符重载,区分前后!(后置重载函数会传入形式参数,但这只作为区别于前置重载函数的特征,并不会真的传参,故在函数内部不可以!2.输入输出运算符重载,注意输入传参无const。
2023-11-12 11:20:28
432
原创 第2关:还原键盘输入(list)
在这段代码中,`it` 是一个插入迭代器,用于将元素插入到列表 `l` 中。当调用 `l.insert(it, s[i])` 时,`it` 不需要手动增加,因为 `insert` 方法会在 `it` 指向的位置插入元素,并且会自动更新 `it`,使其指向新插入的元素。因此,在这个情况下,不需要手动增加 `it`,因为 `insert` 方法会自动更新迭代器的位置。优势:可在任意指定位置插入或者删除元素而不影响列表其他地方。为何迭代器it不用it++,不然不就一直指向l.begin()了吗?
2023-11-12 11:06:33
1690
原创 [头歌]第1关:动态学生信息管理
std::find_if`函数会在指定的范围内查找第一个使谓词返回true的元素,并返回指向该元素的迭代器。在这个示例中,我们的lambda表达式接受一个`const Student&`类型的参数`s`,并返回`s.name == targetName`的比较结果,即判断该学生的姓名是否等于目标姓名`targetName`。这个lambda表达式的作用是用于在`stu`容器中查找名字为`targetName`的学生。2.如何使用find和erase来找到学生类里面的指定姓名的人并将其从动态数组中删除。
2023-11-12 00:35:18
1719
1
原创 1236. 递增三元组
1236. 递增三元组 - AcWing题库数据范围为1~1e5---->时间复杂度只能为O(n)或者O(nlogn)。 只枚举中间的数组B。对于枚举的每一个bi,找出在A中比其小的a的数量cntA,在C中比其大的c的数量cntC。 cntA*cntC即为当b=bi时的所以满足条件的组合。1.将A,B数组从小到大排序(sort)2.明确目标:在A中寻找最后一个小于bi的a的下标,在C中寻找第一个大于bi的c的下标。将二者作为两次二分的分界点。3.边界情况:当A中没有比bi小的数时,cntA=0;当C中没有比
2023-11-11 01:04:16
448
原创 1210. 连号区间数(枚举)
注意:对于区间的枚举,一般是定一移一。固定任何一端移动另外一端均可以。但是此题为便于在枚举移动端的过程中确定最大最小,选择定左移右。枚举一般是先暴力再优化。
2023-11-10 16:29:08
178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人