- 博客(84)
- 收藏
- 关注
原创 堆(优先队列)
堆是一种在频繁插入删除情形下,仍能高效获取序列最值的数据结构。堆顶为树根,始终保持所有元素的最优值。堆总是一棵完全二叉树,称为,因此其存储结构中定位其子节点无需left和right。堆可分类为大根堆、小根堆。在堆中的任意节点,其总=(小根堆,greater)其父节点的值。下面以小根堆为例。
2024-08-13 17:44:34
725
原创 SPFA
基于队列优化的Bellman-Ford特点:单源最短路,求解一个源点到其他所有点的最短距离,适用对象:允许负权图和负环图(负环:图上边权之和为负的环)存储结构:链式前向星核心思想:用队列保存松弛边的出度点,调整其邻接点优化思路:进行松弛操作的的邻接点入队sdis∞path−1QincntMinkvsdisvkvsdisvdisuwdisvmindisvdisuw复杂度:一般为OE,最差情况下退化至OVE。
2024-08-07 19:42:21
961
原创 2024睿抗(Raicom)机器人开发者大赛CAIP-编程技能赛-本科组 国赛 真题
分数 15你肯定很奇怪,这看上去代码似乎不像是正常写出来的代码呀?没错,这是这位同学在网络上购买了所谓的“保研综测套餐”,商家为逃避赛后查重,给这位同学发去了经过混淆的代码。然而经过技术支持方的努力,这位同学不仅被封禁,与 TA 购买了相同“套餐”的同学也利用技术手段全部查出,目前主办方已向警方报案,这些同学的“保研”梦很有可能会转变为“案底”梦……因此如果你在比赛前也购买了类似的服务,现在迷途知返还来得及——毕竟这个商家起码还做了一些努力,许多商家号称“一对一”,实际上将一份代码发给了数十位同学……
2024-08-04 16:23:36
947
原创 倍增 ST表
倍增是与二分相反的算法,其核心思想是每次扩大一倍,以2n的速度极大扩展空间。最经典的倍增是2i(实际应为ei流程:定义倍增表gij,其中i代表起始元素索引,j代表倍增组数(该组对应区间长度(包含原元素本身)为2j,该元素在该组中倍增后的位置为i2j−1n个元素最多可倍增log2n组(经验值在20左右)。gijggij−1]]j−1含义:第i个元素倍增j组,等于其倍增j−1组后再倍增j−1组,即i2ji2。
2024-07-29 21:13:05
600
原创 拓扑排序
拓扑排序可视为对图上所有顶点不重不漏的遍历,因此可采用BFS或DFS实现拓扑排序的充要条件是其为DAG(有向无环图),若拓扑排序无解说明图该图不是DAG,因此可对图进行判环若为无向图可看做有向图进行拓扑排序(基环树)复杂度:O(VE。
2024-07-23 17:25:40
158
原创 Bellman-Ford
对边进行操作,求解一个源点到其他所有点的最短距离适用对象:小图,允许负权图和负环图存储结构:直接存边核心思想:反复松弛(最多进行V−1轮),若该边使距离更优则更新sdis∞path−1MinuvV−1disV−1kvsdisvkvsdisvdisuwdisvmindisvdisuwOVEdis。
2024-07-23 17:05:45
370
原创 离散化
离散化适用于在一个较大区间内,只关心数据的相对大小,而不关心数据的绝对大小,通常将较大的区间通过映射缩小到一个较小区间中,用相对值代替绝对值,进行缩小区间范围的技巧,以提升时空效率。哈希表本质上就是利用了离散化的思想。例:{1409,1628,201,1816,1024,108}->{4,5,2,6,3,1}
2024-07-20 10:17:37
989
原创 2024睿抗(Raicom)机器人开发者大赛CAIP-编程技能赛-本科组 省赛 真题
分数 10热҈热҈热҈……最近热得打的字都出汗了!幸好某连锁餐厅开启了气温大于等于 35 度即可获得一杯免费雪碧的活动。但不知为何,在每个星期四的时候,这个活动会暂停一天……现在给定连续的若干天的气温情况以及给定的第一天是星期几,请你算出有多少天你可以喝到免费的雪碧,又有多少天是因为星期四而导致你喝不到雪碧的。
2024-07-16 01:56:47
1504
1
原创 完全背包
背包容量为V,有n种物品,每种物品有无限多个,第i种物品体积为ci,价值为wi,怎样装填背包使总价值最大?实际上,完全背包并不代表每种物品可以真正装填“无限”多个,因为存在背包总体积这一限制因素。
2024-07-14 23:26:52
627
转载 数论基础
群友的问题快速幂关键在于拆分 222=216+4+2=216×24×222^{22}=2^{16+4+2}=2^{16} \times 2^4 \times 2^2222=216+4+2=216×24×2210进制快速幂: 高精次幂的解决方案数论基础取余 % 向下取整取模 mod \bmodmod 向0取整取模性质:a opt b(modp)=(a(modp) opt b(modp))(modp),opt=+,−,×,opt≠/a\,opt\,b\pmod p=(a\pmod
2024-07-14 18:43:49
34
原创 0/1背包
注:求解具体方案仅适用于非滚动数组,因为滚动过程会将中间状态信息丢失。终点开始步步向上回溯,根据0/1背包状态转移方程式。个物品是否已装,最后输出标记数组。思路:定义标记数组,从。
2024-07-13 20:18:41
758
原创 hash
key->value,借助离散化的思想对数据进行映射,可视为用value代表原本的key在C++中,可使用map当做哈希表使用,将std::hash当做哈希函数使用。
2024-07-09 18:27:52
702
原创 字典树(Tire树)
字典树的根节点为空,从根节点到某一节点路径上的字符连接起来构成字符串,完整的字符串在链上而非结点上,一个节点的所有子节点都具有相同公共前缀。字典树是一种多叉树,又称为前缀树。核心思想是利用字符串的公共前缀。
2024-07-09 18:26:13
697
原创 树状数组(二叉索引树)
树状数组的核心思想:分治。将数组以二叉树的形式进行维护区间之和。设a为原数组,tree为树状数组。tree数组用于存储树上该结点下t1a1t2t1a2t3a3t4t2t3a4t5a5t6t5a6t7a7t8t4t6t7a8…),即存储x−lowbitx1x。
2024-07-08 19:55:37
2685
原创 STL容器的基础应用
STL容器做形参时,默认情况下仍为按值传递。若需按址传递,可在形参中传递STL容器的引用,或使用指向STL容器的指针,或使用模板参数推导结合传引用。
2024-06-24 00:27:58
857
原创 STL迭代器的基础应用
迭代器的定义方法:| 类型 | 作用 | 定义方式 || 正向迭代器 | 正序遍历STL容器 || 常量正向迭代器 | 以只读方式正序遍历STL容器 || 反向迭代器 | 逆序遍历STL容器 || 常量反向迭代器 | 以只读方式逆序遍历STL容器 |迭代器与自动类型推导:C++11引入了auto。
2024-06-23 18:54:20
1148
原创 Markdown入门语法笔记
Markdown是一种轻量级的文本标记语言,基于“内容才是本质”的理念进行设计,排版格式简洁自然,让创作者将更多时间集中在内容创作而非排版上。Markdown在当今世界上应用非常广泛,论文排版、说明文档、开发文档排版等都离不开Markdown的身影,是当今程序员必会的标记语言之一,Github上项目的开发文档默认排版格式语言即为Markdown。Markdown可拓展性极强,内嵌了许多其他强大的标记语言的语法,如HTML、Latex、Mermaid、Sequence、Flow等。
2024-06-08 16:10:49
433
原创 排序算法(二)
Onlog2n)),不稳定,就地)流程:将待排序元素序列分割成若干个子序列,在子序列内分别进行直接插入排序,待序列基本有序(接近正序)时,再对全体记录进行直接插入排序,能够大大提升直接插入排序效率。希尔排序不存在有序区和无序区。分组方法:并非逐段分组,而是将相距某个增量的元素组成一个子序列。对于长度为n的数组,增量序列为21n22n23n1,且增量序列互质(最经典的分组方法)。
2024-05-31 18:02:26
990
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人