C++系列课程学习规划

C++初级班(120小时)

这个部分主要是帮助语言同学快速入门C++。

Part 1:

语言基础

快速上手 C++

C++简介

IDE

赋值语句、运算符、表达式、常量

变量、数据类型

数据输入输出、顺序结构

程序的控制结构

if、switch 选择结构

选择语句的嵌套。

循环结构,for 循环语句,while 循环,

do-while 循环,循环嵌套。

三种结构嵌套运用。

数组:二维数组

字符数组

字符串数组

文件操作

结构体、指针

Part 2: C++的结构体

重载运算符

如何自己定义加减乘除

如何自己定义比较大小

Part 3: STL 部分

STL

std::vector 不定长数组

std::set 快速查找

std::map 数组的下标

std::string 现代化的字符串

Part 4:快速实现基础数据结构

链表(Linked list)

链表是什么

如何快速实现链表

栈(Stack)

栈是什么

如何快速实现

队列(Queue)

队列是什么

如何快速实现队列


算法中级班(120 小时)

Part 1: 算法入门

什么是一个好算法

时空复杂度分析

如何找到一个答案

枚举法

模拟算法

贪心算法

递归

什么是递归

递归的实现

分治

序列算法

前缀和

尺取法(双指针)

在有序数据中快速查找

二分查找

Part 2: 排序算法

归并排序

递归处理

合并数组

应用:逆序对

快速排序

自定义 comp 函数

结构体内重载运算符

桶排序

Part 3:搜索算法

深度优先搜索(DFS)

广度优先搜索(BFS)

如何优化搜索

记忆化搜索

剪枝

可行性剪枝

上下界剪枝

最优化剪枝

Part 4:数据结构

基础数据结构怎么考

链表、栈、队列的习题

如何存储一颗树

邻接矩阵

邻接表

链式前向星

vector

如何遍历一颗树

什么是堆

如何快速实现一个堆

堆的优先级定义、运算符重载

并查集

什么是并查集

并查集的快速实现

按秩合并

路径压缩

Part 5:动态规划

递推

经典递推问题

背包问题

01 背包

完全背包

多重背包(二进制分解)

滚动数组

经典动态规划问题

最长上升子序列

最长公共子序列

典型题:LCS 转 LIS

Part 6:图论

什么是图

如何存图

链式前向星

如何遍历图

最短路问题

Floyd 算法

Dijkstra、堆优化算法

SPFA 算法

最小生成树问题

Kruskal 算法

Prim 算法

拓扑图

Part 7:数学

进制转化

gcd

素数判断

素数筛法(埃氏筛法)

模运算及其性质

快速幂


算法高级班(240 小时)

Part 1: 算法入门

位运算

二进制枚举

序列算法

序列差分及应用

二分答案

解决答案单调性问题

倍增算法

涉及倍增的 dp(跑路)

RMQ 问题

倍增求 LCA

离散化

悬线法

Part 2: 搜索

双向 BFS

剪枝技巧

Part 3:数据结构

单调数据结构

单调栈

单调队列

快速区间查询

分块

树状数组入门

线段树入门

Part 4:图论

二分图

什么是二分图

二分图匹配

强连通性

Tarjan 算法

缩点

点/边双连通性、双连通分量

割边、割点求法

缩点

DAG 上的 DP 问题

最短路问题

最短路问题扩展

差分约束模型

分层图最短路模型

拓扑排序

图论综合应用

树相关

树的直径

树的重心

最近公共祖先

Part 5:动态规划

区间型 DP

状态压缩型 DP

树形 DP

数位 DP

Part 6:数学

素数

埃氏线性素数筛

欧几里得

gcd

ex_gcd

同余

不定方程

费马小定理

求逆元

线性求 n 个数逆元

欧拉

高斯消元

欧拉函数

线性欧拉筛

快速幂

组合数学

排列组合

卡特兰数

[scoi2010] 生成字符串

容斥原理

线性代数

矩阵乘法

结合快速幂

抽屉原理

Part 7: 字符串

字符串匹配问题

Trie 树

字符串哈希

KMP

扩展 KMP

回文串问题

Manacher


算法省选班

Part 1: 计算几何

叉积

判断点、线段、直线、多边形的相互位置关系

凸多边形面积、重心计算

凸包的定义与求法

最近/远点对

半平面交

矩形的并与交

三角剖分

Pick 定理

计算相关(扫描线计算面积,三位凸包体积)

极坐标系

欧氏距离,曼哈顿距离与切比雪夫距离

曼哈顿距离与切比雪夫距离的转化

扫描线

自适应 Simpson 积分

Part 2: 基础算法

二分 Plus

二分套二分

分数规划问题

二进制 Plus

枚举子集

简单的二进制计数

01 Trie

大模拟

Part 3: 搜索

A*算法

迭代加深算法与 IDA*

Part 4: 数据结构

线段树

区间修改,区间查询

lazy tag

维护不同种内容

树链剖分

分块数据结构

分块

莫队算法

离线算法

莫队算法

CDQ 分治(三维偏序)

可持久化

可持久化线段树

散列表

可并堆

平衡树

伸展树

Treap 树

动态树

Link-Cut 树

Part 5: 图论

连通性

2-SAT 问题

树上问题

启发式合并

虚树

点分治

最小树形图 朱-刘算法

网络流

最大流

最小费用流

最小割

上下界网络流

平面图-对偶图

网络流建模基础:网络流 24 题

Part 6: 动态规划

DP 优化

单调队列/单调栈优化

数据结构优化

斜率优化

四边形不等式优化

Part 7: 数学&数论

原根和指标

素数相关

Miller-Rabin 素数判定

Pollard's Rho 质因子分解

同余问题进阶

中国剩余定理及其扩展

BSGS 及其扩展原根及其性质

高次剩余

二次剩余

原根及离散对数

Lucas 定理

卢卡斯定理

数论函数初步(欧拉函数,莫比乌斯函数,除数函数等常见积性函数及其性质)

狄利克雷卷积及其性质

组合数学

8 种球盒问题

斯特林数及其性质

整数拆分问题

二项式反演

概率期望

期望的线性性

概率 dp

概率方程组求解

线性代数

高斯消元

线性递推与矩阵快速幂

线性基

多项式与幂级数

DFT/FFT

FFT 与 FNTT 算法的实现

拉格朗日插值

NTT

任意模数 NTT

Part 8: 博弈论与信息论

组合游戏

SG 函数

Nim 游戏

数据压缩

哈夫曼编码

Part 9: 字符串

模式匹配

AC 自动机

Trie 图

字典树

01-Trie

KMP、Trie 上的 DP

AC 自动机上的 DP

回文串

Manacher 算法

Part 10: 分治

树分治

重链剖分

长链剖分

树套树

Part 12: 随机化与近似算法

爬山法

模拟退火

遗传算法


算法 NOI 班

Part 1: 数据结构

高级数据结构进阶

左偏树

树套树

动态树 LCT

K-D Tree

平衡树

替罪羊树

可持久化平衡树

分块数据结构

树分块

树上莫队

离线算法

莫队算法进阶

带修改莫队

树上莫队

回滚莫队

动态树

TopTree

Dancing Links

各种数据结构的综合应用

仙人掌相关

圆方树与仙人掌剖分

Part 2: 代数

线性代数

矩阵树定理

莫比乌斯反演

素性测试

Miller-Robin

Pollard’s ρ质因子分解

原根和指标

数论部分

杜教筛

Min25 筛

洲阁筛

组合数学

生成函数

多项式与幂级数

FFT/FNTT 算法原理

FWT

多项式除法/求逆/开方/对数指数函数等各种算法

常系数齐次线性递推

群论

置换群的定义与性质

Burnside 引理

Polya 定理

博弈论

Nim 游戏

SG 函数

Part 3: 计算几何

旋转卡壳

半平面交

三角剖分

随机增量法(最小圆覆盖问题)

Part 4: 图论

网络流问题

各种建模技巧

线性规划与单纯形算法

树相关问题

边分治

动态点分治

Prufer 序列

基环树相关问题

欧拉图与哈密顿图的定义与性质

弦图相关(不要求)

各种图论问题的综合应用

Part 5: 字符串

字典树

后缀树

后缀自动机

广义后缀自动机

回文树

各种综合性字符串问题

回文串

回文树

Part 6: 分治

序列分治

整体二分

树分治

点/边分治

Part 7: 动态规划

DDP (动态动态规划)

Dp 套 DP


本篇文章就到这里了,喜欢的就请点赞、收藏、打赏,关注我,有问题可以评论或私聊我,我们下篇文章再见😄

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值