zhao_ry514114
赵若伊

导航

 

语言入门

顺序结构

基础框架

  • 头文件
  • 命名空间
  • 主函数

流输入输出

  • 输入输出
    • cin
    • cout
  • 格式化输出控制
    • endl
    • setw

变量与数据类型

  • 变量声明
  • 基本数据类型
    • 整型
      • int
      • short
      • long
    • 浮点型
      • float
      • double
    • 字符型
      • char
    • 布尔型
      • bool
  • const 常量定义
  • 类型自动转换

运算符与表达式

  • 算术运算符
    • +
    • -
    • *
    • /
    • %
  • 复合赋值运算符
  • 自增自减运算符
  • 表达式语句组成

语句类型

  • 声明语句(变量/常量定义)
  • 赋值语句
  • 表达式语句
  • 空语句
  • 复合语句

执行流程特性

  • 线性执行特定(无分支/循环)
  • 内存分配顺序(栈空间)
  • 程序计数器递增机制

分支结构

条件判断运算符

  • 比较运算符
    • >
    • <
    • ==
    • !=
    • >=
    • <=
    • 使用优先级
  • 逻辑运算符
    • 与(&&)
    • 或(||)
    • 非(!)

分支语句类型

  • if 语句系列
    • 单分支
    • 双分支
    • 多分支
    • 嵌套分支
  • switch 语句
    • 注意 break 和 default

特殊分支工具

  • 三目运算符
  • 分支与循环结合
    • continue
    • break

循环结构

循环语句类型

  • for 循环
  • while 循环
  • do-while 循环

循环控制语句

  • break
  • continue

其他

  • 嵌套循环
  • 无限循环

字符串

初始化

  • 默认构造
    • string s1;
  • 拷贝构造
    • string s2("114514");
  • 重复字符构造
    • string s3(5, 'a');
  • 子串构造
    • string s4(str, start_idx, length);

字符串操作

  • 元素访问
    • 下标操作符([])
    • at()(越界抛出异常)
  • 修改操作
    • 拼接
      • +=
      • append()
      • push_back()
    • 插入
      • insert(pos,str)
    • 删除
      • erase(pos, len)
      • pop_back()
    • 替换
      • replace(pos, len, new_str)
  • 容量调整
    • 预分配空间
      • reserve(size)
    • 调整有效字符数
      • resize(n, fill_char)
    • 清空数据
      • clear()

字符串查询与子操作

  • 查找
    • 正向查找
      • find(str, pos)
    • 反向查找
      • rfind()
    • 字符集匹配
      • find_first_of()
      • find_last_of()
      • find_first_not_of()
      • find_last_not_of()
  • 子串处理
    • 截取子串
      • substr(pos, len)
  • 数值转换
    • 字符串转数值
      • stoi()
      • stof()
    • 数值转字符串
      • to_string()

迭代器与遍历

  • 迭代器类型
    • 正向迭代器
      • begin()
      • end()
    • 反向迭代器
      • rbegin()
      • rend()
    • 常量迭代器
      • cbegin()
      • cend()
  • 遍历方式
    • 范围 for 循环
      • for (char c : str)
    • 下标循环
      • for (size_t i = 0; i < str.size(); i ++)

类型转换与兼容

  • 与 C 风格字符串互转
    • 转为 char*
      • c_str()
      • data()
    • 从 char* 构造
      • string str(c_str)
  • 字符类型处理
    • 字符检查
      • isalpha()
      • isdigit()
    • 大小写转换
      • tolower()
      • toupper()

非成员函数

  • 流操作
    • getline(istream, str)(整行读取含空格)

结构体

定义与初始化

成员访问与操作

  • 访问
  • 操作
    • 赋值
    • 修改

高级用法

  • 结构体数组
  • 结构体指针
  • 嵌套结构体
  • 成员函数

函数与递归

函数基础

  • 函数定义
    • 返回类型
  • 参数传递
    • 值传递与引用传递

高级函数特性

  • 函数重载
  • 函数指针
    • 函数指针数组实现
    • typedef简化技巧
  • Lambda 表达式
    • mutable 关键字作用

递归

数据结构

线性数据结构

数组

链表

队列

  • 初始化
  • 入队
  • 出队
  • 获取队首元素
  • 检查是否为空队列
  • 获取队列大小
  • 队列反转
  • B3616 【模板】队列

双端队列

  • 初始化
  • 从前端添加元素
  • 从后端添加元素
  • 从前端删除元素
  • 从后端删除元素
  • 获取前/后端元素
  • 检查是否为空队列
  • 获取队列大小
  • B3656 【模板】双端队列 1

  • 初始化
  • 插入元素
  • 删除元素
    • 最小堆
    • 最大堆
  • 获取堆顶元素
    • 最小堆
    • 最大堆
  • 堆排序
  • 建立堆
  • P3378 【模板】堆

树形数据结构

基本概念

  • 节点
    • 根节点
    • 叶节点
  • 层次
  • 深度
  • 高度
  • 二叉树
    • 完全二叉树
      • 满二叉树
  • 节点数与边的关系

存储

  • 链式
    • 结构体 + 指针
  • 数组
    • 静态分配
  • 多叉树实现

树的遍历

  • DFS
    • 前序遍历
    • 中序遍历
    • 后序遍历
  • BFS

统计与计算

  • 自顶向下
    • 路径和
    • 伸展树
    • 分裂层次聚类
    • 二叉搜索树插入
  • 自底向上
    • 子树节点数

应用

线段树

常见技巧

  • 信息设计
  • 抽象线段树
  • 维护历史信息
    • 历史最值
    • 历史和
  • 动态开点
  • 标记永久化
  • 线段树二分

可持久化线段树

线段树合并

  • 线段树合并及其应用
    • 可持久化
    • SAM 的 endpos 集合
    • 整体 DP
  • 线段树分裂

树套树

图论

图论知识

基础知识

最短路

  • 算法对比
算法 适用 时间复杂度 空间复杂度 知识点
Dijkstra 无负权边 O((N+E)logN) O(N) 优先队列+贪心
SPFA 含负权边 平均O(E) O(N) 队列优化+松弛次数控制
Floyd 多源最短路 O(N³) O(N²) 动态规划三重循环
Johnson 稀疏图全源最短路 O(N²logN+NE) O(N²) 重赋权值+Dijkstra多次调用

无向图最小生成树

  • 最小生成树问题
  • 拟阵和生成树
    • 拟阵的性质
    • 拟阵上的最优化问题
    • 最小生成树的性质
  • 扩展问题
    • 次小生成树
    • k 小生成树
    • 最小生成树计数
    • 最小度限制生成树
    • P1194 买礼物

无向图连通性之双连通分量

有向图可达性之强连通分量

  • 有向图 DFS 树
  • Tarjan 求 SCC
  • Kosaraju 算法

欧拉回路

图论进阶 & 理性娱乐

2-SAT

点双连通进阶之广义圆方树

  • 点双缩点
  • Tarjan 算法求广义圆方树
  • 圆方树的形态和性质

双连通进阶之耳分解和双极定向

  • 耳分解的存在性定理及其构造
  • 双极定向的存在性定理及其构造

支配树

场景 算法 时间复杂度
DAG 拓扑排序+ LCA O(NlogN)
一般图 Lengauer-Tarjan O(Nα(N,E))
需要动态维护 增量构建法 O(N²)
  • 支配关系及其性质
    • 偏序集
  • DAG 支配树
  • 一般图支配树

网络流

网络最大流

  • 增广路
  • 最大流最小割定理
  • Edmonds-Karp
  • Dinic

无负环的费用流

  • SSP
  • Primal-Dual

上下界网络流

常见模型

网络流 24 题

冷门科技

  • DFS 序求 LCA

数论

同余代数

基础知识

  • 同余的性质
  • Fermat 小定理
  • 乘法逆元
    • O(1) 在线逆元
  • Lagrange 定理
  • (扩展)Wilson 定理
  • Kummer 定理
  • 步长和子环
  • (扩展)Euler 定理
  • 同余式的除法
  • 循环群和直积

二元线性不定方程

  • Bezout 定理
  • 扩展欧几里得算法 exgcd
  • 特解的数值范围和通解形式

线性同余方程组

  • 中国剩余定理 CRT
  • 扩展中国剩余定理 exCRT
  • 抽象代数中的 CRT

组合数取模

  • Lucas 定理
  • exLucas 定理

离散对数问题

  • 大步小步算法 BSGS
  • 扩展大步小步算法 exBSGS

阶与原根

  • 阶及其性质与求法
  • 原根
    • 原根判定定理
    • 原根存在定理
    • 原根个数定理
    • 原根的求法
    • 原根和单位根

N 次剩余问题

  • N 次剩余的定义
  • Legendre 符号
  • Legendre 符号
  • 二次剩余的分布和判定
  • Euler 准则
  • 模意义下开平方根
  • 模意义下开 N 次根
posted on 2025-08-25 18:09  zhao_ry514114  阅读(12)  评论(0)    收藏  举报