- 博客(13)
- 收藏
- 关注
原创 C++.csp.基础算法-差分
二维前缀和:arr[][]是原数组, cf[i][j]是差分数组.第一个元素可能是下标(0,0),也可能是下标(1,1),这取决于二维数组的读入。差分就是前缀和的逆运算,对差分数组算前缀和就是原数组,而对前缀和数组进行差分也还是原数组。一维差分:arr[]是原数组, cf[i]是差分数组,第一个元素可能是下标0,也可能是下标1,这取决于数组的读入。修改差分数组: 将cf数组第3个数+1, 第5个数-1;即 -2+1=-1;先构建二维差分数组,然后操作, 最后还原;将区间内的3-4这个区间内的数-1。
2024-11-18 13:37:05
596
原创 C++.csp.基础算法-ST算法
ST表(Sparse Table)是一种用于高效处理区间查询问题的数据结构,常用于的区间查询问题,如区间最值。ST表的主要思想是预处理出一个二维数组,使得对于任意区间 [l, r],可以在 O(1) 的时间复杂度内得到其区间查询结果。
2024-11-04 08:24:37
473
原创 C++.csp.基础算法-倍增法
倍增法与二分法是“相反”的算法,二分法是每次缩小一半,从而以O(log(n))的速度快速缩小定位到解;倍增法是每次扩大一倍,从而以O(pow(2,n))的速度快速地扩展到解空间。pow是c++中指数运算, pow(2,n)指的是2的n次方, 需要引入运算头文件倍增思想的优点在于它通过空间换时间的方式来提高查询效率,尤其在需要频繁查询某个区间内信息的情况下,可以显著减少计算量。
2024-10-28 09:00:21
385
原创 信奥赛.C++.基础算法-尺取法
尺取法:也可称为双指针,是算法竞赛种常用的一个优化技巧,顾名思义,就是像一把尺子(固定某一条件),不断向右(左)移动,不断更新所求答案,用来解决序列区间问题。该方法主要有两种扫描方式:反向扫描和同向扫描。
2024-10-21 10:12:10
290
原创 C++.信奥赛.基础算法-二分法
二分法(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法。它的主要思想是通过每一次查找排除一半的数据,从而将搜索范围迅速缩小,直到找到目标元素或者确定目标元素不存在为止。
2024-10-19 10:47:49
331
原创 C++.信奥赛.STL专题-map (键值对)
/第一个是键(key)的类型(type1name),第二个是值(value)的类型(type2name)//key的类型是string value 类型是int//key的类型是int value 类型是int 类似数组//key的类型是string value 类型是string//key的类型是int value 类型是string。
2024-10-18 07:35:55
392
原创 CSP.C++.J2.STL专题-priority_queue (优先队列)
C++ 中的优先队列(priority_queue)是一种特别的队列,其中每个元素都有各自的优先级,优先级最高的元素最先被移除。简而言之,就是自动排序.题目是入门级,简单来说需要实现的功能可由优先队列直接实现 1:入队 2:输出 3:出队。以int 类型priority_queue举例说明 链表变量 q;口诀: ** 进出空大小,取首尾**7 练习题 P3378 【模板】堆。
2024-10-17 07:45:00
376
原创 C++.csp.STL专题-stack(栈)
队列(Queue)是一种线性数据结构,其特点是数据的插入和删除操作分别在不同的两端进行:插入操作在队列的尾部,删除操作在队列的头部。因此,队列遵循先进先出(FIFO, First In First Out)的原则,即最早进入队列的元素最先被处理。以下是一个while循环, 循环条件是栈不为空, 再将栈顶弹出.7 练习题 P1540 [NOIP2010 提高组] 机器翻译。以int 类型stack举例说明 链表变量 s;口诀: ** 进出空大小,取首尾**stack 名称;
2024-10-16 11:32:38
301
1
原创 C++.csp.STL专题-queue(队列)
队列(Queue)是一种线性数据结构,其特点是数据的插入和删除操作分别在不同的两端进行:插入操作在队列的尾部,删除操作在队列的头部。创建一个队列用于存放内存中的单词, 创建一个int型数组,作为标记数组, 用于记录编号单词是否存在于内存中, 同时在操作队列时候, 移除或者加入单词,改变标记数组中记录的值.以下是一个while循环, 循环条件是队列不为空, 循环体内是将队首元素放到队尾, 然后再将队首出队.7 练习题 P1540 [NOIP2010 提高组] 机器翻译。口诀: ** 进出空大小,取首尾**
2024-10-16 07:56:25
359
原创 信奥赛.csp.C++.J2.STL专题-list(链表)
(1) list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。(双向迭代指的是支持向前以及向后对链表进行遍历)(3) list最大的缺陷是 不支持任意位置的随机访问 ,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)遍历到该位置。(2) list通常 在任意位置进行插入、移除元素的执行效率更好。
2024-10-15 13:58:51
314
原创 信奥赛.CSP.C++.STL专题-vector (向量)
(2)就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。以int 类型vector举例说明 链表变量 v;(1)vector是表示可变大小数组的序列容器。口诀: ** 进出空大小,取首尾**类似动态数组,可做数组相关的练习题。vector 名称;
2024-10-15 10:55:27
266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅