您当前的位置: 首页 >  蓝桥杯

MangataTS

暂无认证

  • 4浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

蓝桥杯集训之STL和algorithm

MangataTS 发布时间:2022-01-01 20:09:36 ,浏览量:4

文章目录
  • 配套视频
  • 一、 STL部分
    • 1.1 queue (FIFO)
      • 1.1.1 头文件
      • 1.1.2 定义
      • 1.1.3 基本操作
      • 1.1.4 应用
    • 1.2 stack (FILO)
      • 1.2.1 头文件
      • 1.2.2 定义
      • 1.2.3 基本操作
      • 1.2.4 应用
    • 1.3 priority_queue
      • 1.3.1 头文件
      • 1.3.2 定义
      • 1.3.3 基本操作
      • 1.3.4 应用
      • 1.3.5 重载代码
    • 1.4 vector
      • 1.4.1 头文件
      • 1.4.2 定义和特点
      • 1.4.3 基本操作
      • 1.4.4 应用
    • 1.5 set
      • 1.5.1 头文件
      • 1.5.2 定义
      • 1.5.3 基本操作
      • 1.5.4 重载代码
    • 1.6 unordered_set
    • 1.7 map
      • 1.5.1 头文件
      • 1.5.2 定义
      • 1.5.3 基本操作
      • 1.5.4 应用
    • 1.8 unordered_map
      • 1.8.1 头文件
      • 1.8.2 和map区别
    • 1.9 pair
      • 1.9.1 头文件
      • 1.9.2 定义
      • 1.9.3 基本使用
      • 1.9.4 应用场景
    • 1.10迭代器`iterator`
      • 1.10.1定义方法
      • 1.10.2 使用
      • 1.10.3 详细学习资料
    • 1.10 string
  • 二、Algorithm部分
    • 2.1 sort
    • 2.2 __gcd
    • 2.3 max
    • 2.4 min
    • 2.5 abs
    • 2.6 swap
    • 2.7 reverse
    • 2.8 next_permutation
    • 2.9 lower_bound
    • 2.10 upper_bound
  • 训练题单

配套视频

蓝桥杯集训之Algorithm库函数: https://www.bilibili.com/video/BV1ia411B7U2

蓝桥杯集训之STL演示:https://www.bilibili.com/video/BV1Z3411v72U

蓝桥杯集训之Algorithm库函数:https://www.bilibili.com/video/BV1Y34y1z7uX

一、 STL部分 1.1 queue (FIFO) 1.1.1 头文件

使用该容器需要#include头文件

1.1.2 定义

queue que;//这个int可以更换成自己想要的数据

1.1.3 基本操作

1.que.size() 返回队列元素数量

2.que.empty() 返回队列是否为空(空返回true,反之false)

3.que.push() 加入队列

4.que.pop() 出队

5.que.front() 返回队首

6.que.back() 返回队尾

1.1.4 应用

队列广泛引用在广度优先搜索(BFS)里、约瑟夫环问题等

1.2 stack (FILO) 1.2.1 头文件

使用该容器需要#include头文件

1.2.2 定义

stack S;

1.2.3 基本操作

1.S.size() 返回栈里元素个数

2.S.empty() 返回栈是否为空(空返回true,反之false)

3.S.push() 压入一个元素进栈

4.S.pop() 从栈弹出一个元素

5.S.top() 返回栈顶

1.2.4 应用

逆波兰表达式等

1.3 priority_queue 1.3.1 头文件

使用该容器需要#include头文件

1.3.2 定义

priority_queue que;

默认大顶堆,通过添加greater就能获得小顶堆

但是要注意这里如果想使用自定义的数据结构的话,需要手写排序规则:

eg:

struct Node  //运算符重载
{
    int a,b;
    int val;
    bool friend operator y.val;
    }
};
priority_queue que;
1.3.3 基本操作

1.que.size() 返回队列元素数量

2.que.empty() 返回队列是否为空(空返回true,反之false)

3.que.push() 加入队列

4.que.pop() 出队

5.que.top() 返回队首

1.3.4 应用

应用在一些贪心的算法上面,优化dijkstra复杂度等

1.3.5 重载代码
pq.push(item):添加元素 O(logn)
pq.pop():使优先级最高的出队O(logn)
pq.top():获取优先级最高的元素O(1)
pq.size():获取元素个数O(1)
pq.empty():是否为空O(1)
优先队列的定义:
priority_queue q1; //默认从大到小,大顶堆 
priority_queue q2; //降序队列,大顶堆 
priority_queue q3; //升序队列,小顶堆
对于结构体定义:
struct T1{//法一 强烈推荐 
	int x,y;
	friend bool operator             
关注
打赏
1665836431
查看更多评论
0.0412s