三三文档首页:修订间差异
跳转到导航
跳转到搜索
小 导入1个版本 |
->Importer 批量导入三三文档 |
||
| 第1行: | 第1行: | ||
__NOTOC__ __NOEDITSECTION__ | |||
{| style="width:100%; margin:0; border:none; border-spacing:10px 0;" | |||
|- | |||
| style="width:70%; vertical-align:top;" | | |||
= 三三文档 = | = 三三文档 = | ||
欢迎来到 '''三三文档''',这里收录了 C++ 编程与算法竞赛(OI)相关的学习资料、代码模板和题解。 | |||
本套文档遵循 [[基础语法大纲|33dai 基础语法大纲]] 的课程体系,从零基础到算法竞赛入门,循序渐进。 | |||
| style="width:30%; vertical-align:top; text-align:center; background:#f8f9fa; border:1px solid #a2a9b1; padding:10px;" | | |||
<div style="font-size:85%;">'''快速导航'''</div> | |||
[[#语法基础|语法基础]] · [[#能力提升|能力提升]] · [[#算法基础|算法基础]]<br/> | |||
[[#搜索|搜索]] · [[#图论|图论]] · [[#动态规划|动态规划]]<br/> | |||
[[#数据结构|数据结构]] · [[#数学相关|数学相关]] · [[#33OJ 文档|33OJ 文档]]<br/> | |||
[[#课程大纲|课程大纲]] · [[#教学约定|教学约定]] | |||
|} | |||
---- | |||
== 语法基础 == | |||
<div style="float:right; margin-left:15px; margin-bottom:10px; background:#f0f7ff; border:1px solid #a2a9b1; padding:8px 12px; font-size:88%;"> | |||
'''入门学习路线'''<br/> | |||
输入输出 → 条件判断 → 循环<br/> | |||
→ 数组 → 函数 → 数值类型<br/> | |||
→ 字符 → 高级IO → 位运算<br/> | |||
→ 字符串 → 结构体 → 递归 | |||
</div> | |||
=== 输入输出与变量 === | |||
* [[01-基础语法/01-基础框架|基础框架]] — 万能头文件、<code>main</code> 函数、<code>using namespace std</code> | |||
* [[01-基础语法/02-输出语句|输出语句]] — <code>cout</code>、换行、转义符、保留小数 | |||
* [[01-基础语法/07-输入语句|输入语句]] — <code>cin</code>、<code>getline</code> | |||
* [[01-基础语法/04-赋值与数学运算|赋值与数学运算]] — 赋值、运算符、语法糖 | |||
=== 条件判断 === | |||
* [[02-选择与循环/01-选择语句|选择语句]] — <code>if</code>/<code>else</code>、比较运算符、逻辑运算符、布尔 | |||
* [[02-选择与循环/02-常见选择逻辑|常见选择逻辑]] — 闰年判断、三角形判断、上下取整 | |||
=== 循环 === | |||
* [[02-选择与循环/03-循环语句|循环语句]] — <code>while</code>、<code>for</code>、<code>break</code>、<code>continue</code> | |||
* [[02-选择与循环/04-常见循环逻辑|常见循环逻辑]] — 最值、求和、计数、质数判断、数位分解 | |||
* [[02-选择与循环/05-循环嵌套与综合|循环嵌套与综合]] — 循环嵌套、综合练习 | |||
=== 一维数组 === | |||
* [[03-进阶基础/01-数组|数组]] — 一维数组、多维数组 | |||
=== 函数 === | |||
* [[03-进阶基础/03-函数|函数]] — 定义、参数、返回值、传引用 | |||
=== 数值类型与类型转换 === | |||
* [[01-基础语法/03-变量与基础类型|变量与基础类型]] — <code>int</code>、<code>long long</code>、<code>double</code>、<code>char</code>、<code>string</code>、<code>bool</code> | |||
* [[01-基础语法/06-整数编码|整数编码]] — 二进制、原码反码补码、数据范围 | |||
=== 字符类型与字符转换 === | |||
* [[01-基础语法/05-字符|字符]] — ASCII、字符数字转换、大小写转换 | |||
=== 花式输入输出 === | |||
* [[03-进阶基础/07-文件读写与高级IO|文件读写与高级IO]] — <code>freopen</code>、IO 加速、读入到文件末尾 | |||
=== 二进制与位运算 === | |||
* [[03-进阶基础/06-位运算与三目运算符|位运算与三目运算符]] — 位运算、三目运算符 | |||
=== 字符串 === | |||
* [[03-进阶基础/02-字符串|字符串]] — <code>string</code>、<code>substr</code>、<code>find</code>、遍历 | |||
=== 多维数组与结构体 === | |||
* [[03-进阶基础/04-结构体|结构体]] — 定义结构体、成员访问、结构体数组 | |||
=== 简单递归 === | |||
* [[03-进阶基础/05-递归|递归]] — 递归思想、基础递归题目 | |||
=== 其他语法参考 === | |||
* [[01-基础语法/08-编译与运行|编译与运行]] — 编译命令、栈空间、C++标准 | |||
* [[01-基础语法/09-常见小技巧|常见小技巧]] — 常用头文件、宏定义、调试技巧 | |||
---- | |||
== | == 能力提升 == | ||
<div style="float:right; margin-left:15px; margin-bottom:10px; background:#f0fff0; border:1px solid #a2a9b1; padding:8px 12px; font-size:88%;"> | |||
'''专题训练'''<br/> | |||
简单模拟 · 简单枚举<br/> | |||
高精度 · 数学 · 排序<br/> | |||
数据结构 · 动态数组<br/> | |||
链表 · 重载运算符 | |||
</div> | |||
=== | === 简单模拟 === | ||
* [[08-基础算法/01-简单模拟|简单模拟]] — 经典模拟习题,日期计算、图形打印等 | |||
=== 简单枚举 === | |||
* [[08-基础算法/02-简单枚举|简单枚举]] — 简单枚举与优化,百钱买百鸡等 | |||
=== | === 简单高精度 === | ||
* [[05-算法模板/04-高精度|高精度]] — 高+高、高-高、高×高、高×低、高÷低、高%低 | |||
- | |||
=== | === 简单数学 === | ||
* [[06-数学相关/01-质数判断与筛法|质数判断与筛法]] — 质数判断、埃氏筛、线性筛 | |||
* [[06-数学相关/02-最大公因数与最小公倍数|最大公因数与最小公倍数]] — 因数枚举、最大公因数 | |||
* [[08-基础算法/03-进制转换|进制转换]] — 任意进制互转 | |||
=== | === 简单排序 === | ||
* [[05-算法模板/01-排序算法|排序算法]] — 选择排序、冒泡排序、插入排序、计数排序、<code>sort()</code> 函数 | |||
--- | === 简单数据结构 === | ||
* [[04-数据结构/02-queue与deque|queue 与 deque]] — 队列与双端队列 | |||
* [[04-数据结构/03-stack|stack]] — 栈 | |||
* [[08-基础算法/04-链表|链表]] — 链表的概念、数组模拟链表 | |||
=== 动态数组 === | |||
* [[04-数据结构/01-vector|vector]] — 动态数组基础使用 | |||
=== C++ 进阶语法 === | |||
* [[04-数据结构/04-map与unordered_map|map / unordered_map]] — 映射 | |||
* [[04-数据结构/05-set与unordered_set|set / unordered_set]] — 集合 | |||
* [[04-数据结构/06-priority_queue|priority_queue]] — 优先队列 | |||
* [[09-进阶算法/06-重载运算符与迭代器|重载运算符与迭代器]] — 运算符重载、迭代器使用 | |||
* [[04-数据结构/07-STL实用例子|STL 实用例子]] — 综合例题 | |||
---- | |||
== 算法基础 == | |||
<div style="float:right; margin-left:15px; margin-bottom:10px; background:#fff8f0; border:1px solid #a2a9b1; padding:8px 12px; font-size:88%;"> | |||
'''进阶算法'''<br/> | |||
前缀和 · 差分 · 双指针<br/> | |||
ST表 · 二分 · 离散化<br/> | |||
快速幂 · 数论 · 组合 | |||
</div> | |||
=== 线性优化技巧 === | |||
* [[09-进阶算法/01-前缀和与差分|前缀和与差分]] — 一维前缀和、二维前缀和、简单差分 | |||
* [[09-进阶算法/02-双指针|双指针]] — 对撞指针、快慢指针、滑动窗口 | |||
* [[09-进阶算法/03-ST表|ST表]] — 区间最值查询(RMQ) | |||
=== 二分查找与二分答案 === | |||
* [[09-进阶算法/04-二分查找与二分答案|二分查找与二分答案]] — lower_bound、二分答案 | |||
=== 离散化 === | |||
* [[09-进阶算法/05-离散化|离散化]] — 值域压缩 | |||
=== 简单数论 === | |||
* [[06-数学相关/03-欧拉函数|欧拉函数]] | |||
* [[06-数学相关/04-乘法逆元|乘法逆元]] — 模意义下的乘法逆元 | |||
* [[06-数学相关/08-快速幂与快速乘|快速幂与快速乘]] — 快速幂、快速乘 | |||
=== 简单组合 === | |||
* [[06-数学相关/07-组合数与反演|组合数与反演]] — 排列数、组合数、杨辉三角、卡特兰数、反演 | |||
=== 字符串哈希 === | |||
* [[06-数学相关/05-字符串哈希|字符串哈希]] | |||
=== 计算几何 === | |||
* [[06-数学相关/06-计算几何|计算几何]] | |||
---- | |||
== 搜索 == | |||
=== 深度优先搜索 === | |||
* [[10-搜索/01-深度优先搜索|深度优先搜索(DFS)]] — 排列枚举、组合枚举、网格搜索 | |||
=== 广度优先搜索 === | |||
* [[10-搜索/02-广度优先搜索|广度优先搜索(BFS)]] — 网格最短路、多源 BFS | |||
=== 简单图上搜索 === | |||
* [[10-搜索/03-简单图上搜索|简单图上搜索]] — 图的遍历、连通分量、环检测 | |||
---- | |||
== 图论 == | |||
<div style="float:right; margin-left:15px; margin-bottom:10px; background:#fff0ff; border:1px solid #a2a9b1; padding:8px 12px; font-size:88%;"> | |||
'''图论体系'''<br/> | |||
图论基础 → 搜索遍历<br/> | |||
最小生成树 · 最短路<br/> | |||
并查集 · 拓扑排序<br/> | |||
最近公共祖先 | |||
</div> | |||
=== 图论基础 === | |||
* [[11-图论/01-图论基础|图论基础]] — 树/图的概念、邻接矩阵、邻接表、链式前向星 | |||
=== 并查集与拓扑排序 === | |||
* [[05-算法模板/08-并查集|并查集]] — 路径压缩与启发式合并 | |||
* [[11-图论/04-拓扑排序|拓扑排序]] — Kahn 算法、DFS 实现 | |||
=== 最小生成树 === | |||
* [[11-图论/02-最小生成树|最小生成树]] — Kruskal 算法、Prim 算法 | |||
=== 最短路 === | |||
* [[11-图论/03-最短路|最短路]] — Floyd、Dijkstra、Bellman-Ford、SPFA | |||
=== 最近公共祖先 === | |||
* [[05-算法模板/03-最近公共祖先LCA|最近公共祖先 LCA]] | |||
---- | |||
== 动态规划 == | |||
=== 线性 DP === | |||
* [[12-动态规划/01-线性DP|基础 DP]] — 数字三角形、最长上升子序列(LIS)、最长公共子序列(LCS) | |||
=== 区间 DP === | |||
* [[12-动态规划/02-区间DP|区间 DP]] — 石子合并、回文串问题 | |||
=== 背包 DP === | |||
* [[12-动态规划/03-背包DP|背包 DP]] — 01 背包、完全背包、多重背包、分组背包 | |||
=== 树上 DP === | |||
* [[12-动态规划/04-树上DP|树上 DP]] — 子树大小、树的直径、树的重心 | |||
---- | |||
== 数据结构 == | |||
=== 树状数组 === | |||
* [[13-高级数据结构/01-树状数组|树状数组]] — 基础树状数组、维护权值数组、维护差分数组、二维树状数组 | |||
=== 线段树 === | |||
* [[05-算法模板/02-线段树|线段树]] — 单点修改、区间加、区间和查询、区间最值查询 | |||
=== 其他模板 === | |||
* [[05-算法模板/05-矩阵快速幂|矩阵快速幂]] | |||
* [[05-算法模板/06-高斯消元|高斯消元]] | |||
* [[05-算法模板/07-线性基|线性基]] | |||
---- | |||
== 33OJ 文档 == | |||
* [[07-33OJ文档/01-评测机|评测机]] | |||
* [[07-33OJ文档/02-题面规范|题面规范]] | |||
* [[07-33OJ文档/03-三三月赛|三三月赛]] | |||
---- | |||
== 课程大纲 == | == 课程大纲 == | ||
| 第86行: | 第286行: | ||
本套文档遵循 [[基础语法大纲|33dai 基础语法大纲]] 的课程体系,分为 '''核心序列(Core)''' 和 '''扩展维度(Extend)''' 两部分: | 本套文档遵循 [[基础语法大纲|33dai 基础语法大纲]] 的课程体系,分为 '''核心序列(Core)''' 和 '''扩展维度(Extend)''' 两部分: | ||
{| class="wikitable" | {| class="wikitable" style="width:100%;" | ||
|- | |||
! 课程编号 !! 课程标题 !! 课程内容 | ! 课程编号 !! 课程标题 !! 课程内容 | ||
|- | |- | ||
| C01-1 | | C01-1 || 高级计算器 || 输入输出语句、<code>int</code> 变量 | ||
| 高级计算器 | |||
| 输入输出语句、<code>int</code> 变量 | |||
|- | |- | ||
| C01-2 | | C01-2 || 如果那么 || 不带 <code>else</code> 的 <code>if</code> 语句 | ||
| 如果那么 | |||
| 不带 <code>else</code> 的 <code>if</code> 语句 | |||
|- | |- | ||
| C01-3 | | C01-3 || 在范围内吗 || 带 <code>else</code> 的 <code>if</code> 语句 | ||
| 在范围内吗 | |||
| 带 <code>else</code> 的 <code>if</code> 语句 | |||
|- | |- | ||
| C01-4 | | C01-4 || 一直做下去 || <code>while</code> 语句 | ||
| 一直做下去 | |||
| <code>while</code> 语句 | |||
|- | |- | ||
| C01-5 | | C01-5 || 想做几次做几次 || <code>for</code> 语句 | ||
| 想做几次做几次 | |||
| <code>for</code> 语句 | |||
|- | |- | ||
| C01-6 | | C01-6 || 循环套循环 || 循环嵌套 | ||
| 循环套循环 | |||
| 循环嵌套 | |||
|- | |- | ||
| C01-7 | | C01-7 || 先存起来 || 一维数组 | ||
| 先存起来 | |||
| 一维数组 | |||
|- | |- | ||
| C01-8 | | C01-8 || 数组妙用 || 权值数组、无返回值无参数函数 | ||
| 数组妙用 | |||
| 权值数组、无返回值无参数函数 | |||
|- | |- | ||
| C01-9 | | C01-9 || 功能打包 || 有参数有返回值函数 | ||
| 功能打包 | |||
| 有参数有返回值函数 | |||
|- | |- | ||
| E01-1 | | E01-1 || <code>int</code> 存不下了 || <code>long long</code> 类型、数据范围、整数编码 | ||
| <code>int</code> 存不下了 | |||
| <code>long long</code> 类型、数据范围、整数编码 | |||
|- | |- | ||
| E01-2 | | E01-2 || 小数怎么办 || <code>double</code> 类型、类型转换 | ||
| 小数怎么办 | |||
| <code>double</code> 类型、类型转换 | |||
|- | |- | ||
| E01-3 | | E01-3 || 文字与符号 || <code>char</code> 类型、字符数字转换 | ||
| 文字与符号 | |||
| <code>char</code> 类型、字符数字转换 | |||
|- | |- | ||
| E01-4 | | E01-4 || 花式输入输出 || 读入到文件末尾、保留 <math>x</math> 位小数 | ||
| 花式输入输出 | |||
| 读入到文件末尾、保留 <math>x</math> 位小数 | |||
|- | |- | ||
| E01-5 | | E01-5 || 更多运算符 || 位运算、三目运算符 | ||
| 更多运算符 | |||
| 位运算、三目运算符 | |||
|- | |- | ||
| E01-6 | | E01-6 || 高级控制 || <code>break</code>、<code>continue</code> 与 <code>exit(0)</code> | ||
| 高级控制 | |||
| <code>break</code>、<code>continue</code> 与 <code>exit(0)</code> | |||
|- | |- | ||
| E01-7 | | E01-7 || 一串字符 || 字符串 | ||
| 一串字符 | |||
| 字符串 | |||
|- | |- | ||
| E01-8 | | E01-8 || 高维结构 || 多维数组与结构体 | ||
| 高维结构 | |||
| 多维数组与结构体 | |||
|- | |- | ||
| E01-9 | | E01-9 || 自己调用自己 || 简单递归、参数传引用 | ||
| 自己调用自己 | |||
| 简单递归、参数传引用 | |||
|} | |} | ||
---- | |||
== 教学约定 == | == 教学约定 == | ||
详见 [[教学约定|教学约定]]。 | 详见 [[教学约定|教学约定]]。 | ||
---- | |||
== 关于本文档 == | |||
本套文档基于以下课程体系整理: | |||
* [[基础语法大纲|33dai 基础语法大纲]] — 完整的课程大纲与教学体系 | |||
* 涵盖 C++ 基础语法、数据结构与算法、数学基础、OJ 工具等内容 | |||
* 面向零基础到算法竞赛入门的学习者 | |||
[[Category:三三文档]] | [[Category:三三文档]] | ||
2026年5月20日 (三) 16:50的版本
三三文档欢迎来到 三三文档,这里收录了 C++ 编程与算法竞赛(OI)相关的学习资料、代码模板和题解。 本套文档遵循 33dai 基础语法大纲 的课程体系,从零基础到算法竞赛入门,循序渐进。 |
快速导航
语法基础 · 能力提升 · 算法基础 |
语法基础
入门学习路线
输入输出 → 条件判断 → 循环
→ 数组 → 函数 → 数值类型
→ 字符 → 高级IO → 位运算
→ 字符串 → 结构体 → 递归
输入输出与变量
- 基础框架 — 万能头文件、
main函数、using namespace std - 输出语句 —
cout、换行、转义符、保留小数 - 输入语句 —
cin、getline - 赋值与数学运算 — 赋值、运算符、语法糖
条件判断
循环
一维数组
- 数组 — 一维数组、多维数组
函数
- 函数 — 定义、参数、返回值、传引用
数值类型与类型转换
字符类型与字符转换
- 字符 — ASCII、字符数字转换、大小写转换
花式输入输出
- 文件读写与高级IO —
freopen、IO 加速、读入到文件末尾
二进制与位运算
- 位运算与三目运算符 — 位运算、三目运算符
字符串
- 字符串 —
string、substr、find、遍历
多维数组与结构体
- 结构体 — 定义结构体、成员访问、结构体数组
简单递归
- 递归 — 递归思想、基础递归题目
其他语法参考
能力提升
专题训练
简单模拟 · 简单枚举
高精度 · 数学 · 排序
数据结构 · 动态数组
链表 · 重载运算符
简单模拟
- 简单模拟 — 经典模拟习题,日期计算、图形打印等
简单枚举
- 简单枚举 — 简单枚举与优化,百钱买百鸡等
简单高精度
- 高精度 — 高+高、高-高、高×高、高×低、高÷低、高%低
简单数学
- 质数判断与筛法 — 质数判断、埃氏筛、线性筛
- 最大公因数与最小公倍数 — 因数枚举、最大公因数
- 进制转换 — 任意进制互转
简单排序
- 排序算法 — 选择排序、冒泡排序、插入排序、计数排序、
sort()函数
简单数据结构
- queue 与 deque — 队列与双端队列
- stack — 栈
- 链表 — 链表的概念、数组模拟链表
动态数组
- vector — 动态数组基础使用
C++ 进阶语法
- map / unordered_map — 映射
- set / unordered_set — 集合
- priority_queue — 优先队列
- 重载运算符与迭代器 — 运算符重载、迭代器使用
- STL 实用例子 — 综合例题
算法基础
进阶算法
前缀和 · 差分 · 双指针
ST表 · 二分 · 离散化
快速幂 · 数论 · 组合
线性优化技巧
二分查找与二分答案
- 二分查找与二分答案 — lower_bound、二分答案
离散化
- 离散化 — 值域压缩
简单数论
简单组合
- 组合数与反演 — 排列数、组合数、杨辉三角、卡特兰数、反演
字符串哈希
计算几何
搜索
深度优先搜索
- 深度优先搜索(DFS) — 排列枚举、组合枚举、网格搜索
广度优先搜索
- 广度优先搜索(BFS) — 网格最短路、多源 BFS
简单图上搜索
- 简单图上搜索 — 图的遍历、连通分量、环检测
图论
图论体系
图论基础 → 搜索遍历
最小生成树 · 最短路
并查集 · 拓扑排序
最近公共祖先
图论基础
- 图论基础 — 树/图的概念、邻接矩阵、邻接表、链式前向星
并查集与拓扑排序
最小生成树
- 最小生成树 — Kruskal 算法、Prim 算法
最短路
- 最短路 — Floyd、Dijkstra、Bellman-Ford、SPFA
最近公共祖先
动态规划
线性 DP
- 基础 DP — 数字三角形、最长上升子序列(LIS)、最长公共子序列(LCS)
区间 DP
- 区间 DP — 石子合并、回文串问题
背包 DP
- 背包 DP — 01 背包、完全背包、多重背包、分组背包
树上 DP
- 树上 DP — 子树大小、树的直径、树的重心
数据结构
树状数组
- 树状数组 — 基础树状数组、维护权值数组、维护差分数组、二维树状数组
线段树
- 线段树 — 单点修改、区间加、区间和查询、区间最值查询
其他模板
33OJ 文档
课程大纲
本套文档遵循 33dai 基础语法大纲 的课程体系,分为 核心序列(Core) 和 扩展维度(Extend) 两部分:
| 课程编号 | 课程标题 | 课程内容 |
|---|---|---|
| C01-1 | 高级计算器 | 输入输出语句、int 变量
|
| C01-2 | 如果那么 | 不带 else 的 if 语句
|
| C01-3 | 在范围内吗 | 带 else 的 if 语句
|
| C01-4 | 一直做下去 | while 语句
|
| C01-5 | 想做几次做几次 | for 语句
|
| C01-6 | 循环套循环 | 循环嵌套 |
| C01-7 | 先存起来 | 一维数组 |
| C01-8 | 数组妙用 | 权值数组、无返回值无参数函数 |
| C01-9 | 功能打包 | 有参数有返回值函数 |
| E01-1 | int 存不下了 |
long long 类型、数据范围、整数编码
|
| E01-2 | 小数怎么办 | double 类型、类型转换
|
| E01-3 | 文字与符号 | char 类型、字符数字转换
|
| E01-4 | 花式输入输出 | 读入到文件末尾、保留 [math]\displaystyle{ x }[/math] 位小数 |
| E01-5 | 更多运算符 | 位运算、三目运算符 |
| E01-6 | 高级控制 | break、continue 与 exit(0)
|
| E01-7 | 一串字符 | 字符串 |
| E01-8 | 高维结构 | 多维数组与结构体 |
| E01-9 | 自己调用自己 | 简单递归、参数传引用 |
教学约定
详见 教学约定。
关于本文档
本套文档基于以下课程体系整理:
- 33dai 基础语法大纲 — 完整的课程大纲与教学体系
- 涵盖 C++ 基础语法、数据结构与算法、数学基础、OJ 工具等内容
- 面向零基础到算法竞赛入门的学习者