Skip to content

Latest commit

 

History

History

02 - 打印稿模板汇总

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

打印稿大目录

注:由于单个 Markdown 文件过长可能导致加载缓慢,所以对于部分超长文件进行了A、B、C的拆分。

版本:v8.4(2023.11.02定稿修改:ICPC南京区域赛)。点此查看各版本更新日志

基础算法

  • 头文件
  • 常用函数
  • 最大公约数 gcd
    • 欧几里得算法
    • 位运算优化
  • 整数域二分
    • 旧版(无法处理负数情况)
    • 新版
  • 实数域二分
  • 整数域三分
  • 实数域三分

树上问题

  • 树的直径
  • 树论大封装(直径+重心+中心)
  • 点分治 / 树的重心
  • 最近公共祖先 LCA
    • 树链剖分解法
    • 树上倍增解法
  • 树上路径交
  • 树上启发式合并 (DSU on tree)

图论A

  • 常见概念
  • 单源最短路径(SSSP 问题)
    • (正权稀疏图)动态数组存图+Djikstra算法
    • (负权图)Bellman-ford 算法
    • (负权图)SPFA 算法
    • (正权稠密图)邻接矩阵存图+Djikstra算法
  • 多源汇最短路(APSP 问题)
  • 平面图最短路(对偶图)
  • 最小生成树(MST 问题)
    • (稀疏图)Prim算法
    • (稠密图)Kruskal算法
  • 缩点(Tarjan 算法)
    • (有向图)强连通分量缩点
    • (无向图)割边缩点
    • (无向图)割点缩点
  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配(带花树算法)
  • 一般图最大权匹配(带权带花树算法)
  • 二分图最大匹配
    • 匈牙利算法(KM 算法)解
    • HopcroftKarp算法(HK 算法、基于最大流模型)解
  • 二分图最大权匹配(二分图完美匹配)
  • 二分图最大独立点集(Konig 定理)
  • 最长路(topsort+DP 算法)
  • 最短路径树(SPT 问题)
  • 无源汇点的最小割问题 Stoer–Wagner
  • 欧拉路径/欧拉回路 Hierholzers
    • 有向图欧拉路径存在判定
    • 无向图欧拉路径存在判定
    • 有向图欧拉路径求解(字典序最小)
    • 无向图欧拉路径求解
  • 差分约束
  • 2-Sat
    • 基础封装
    • 答案不唯一时不输出

图论B

  • 常见结论
  • 常见例题
    • Prüfer 序列:凯莱公式
    • Prüfer 序列
    • 单源最短/次短路计数
    • 判定图中是否存在负环
    • 输出任意一个三元环
    • 带权最小环大小与计数
    • 最小环大小
    • 本质不同简单环计数
    • 输出任意一个非二元简单环
    • 有向图环计数
    • 输出有向图任意一个环
    • 判定带环图是否是平面图

网络流

  • 最大流
    • Dinic 解
    • 预流推进 HLPP
  • 最小割
  • 费用流

数论A

  • 常见数列
    • 调和级数
    • 素数密度与分布
    • 因数最多数字与其因数数量
  • 欧拉筛(线性筛)
  • 防爆模乘
    • 借助浮点数实现
    • 借助 int128 实现
  • 裴蜀定理
  • 逆元
    • 费马小定理解(借助快速幂)
    • 扩展欧几里得解
    • 离线求解:线性递推解
  • 扩展欧几里得 exgcd
  • 离散对数 bsgs 与 exbsgs
  • 欧拉函数
    • 直接求解单个数的欧拉函数
    • 求解 1 到 N 所有数的欧拉函数
    • 使用莫比乌斯反演求解欧拉函数
  • 组合数
    • debug
    • 逆元+卢卡斯定理(质数取模)
    • 质因数分解
    • 杨辉三角(精确计算)
  • 求解连续数字的正约数集合——倍数法
  • 试除法判是否是质数
    • 标准解
    • 常数优化法
  • 容斥原理
    • 二进制枚举解
    • dfs 解
  • 同余方程组、拓展中国剩余定理 excrt
  • 求解连续数字的按位异或
  • 高斯消元求解线性方程组
  • 康拓展开
    • 正向展开普通解法
    • 正向展开树状数组解
    • 逆向还原
  • Min25 筛
  • 矩阵四则运算
  • 矩阵快速幂
  • 矩阵加速
  • 莫比乌斯函数/反演
  • 整除(数论)分块
  • Miller-Rabin 素数测试
  • Pollard-Rho 因式分解

数论B

  • 常见结论
    • 球盒模型(八种)
    • 麦乐鸡定理
    • 抽屉原理(鸽巢原理)
    • 哥德巴赫猜想
    • 除法、取模运算的本质
    • 与、或、异或
    • 调和级数近似公式
    • 欧拉函数常见性质
    • 组合数学常见性质
    • 范德蒙德卷积公式
    • 卡特兰数
    • 狄利克雷卷积
    • 斐波那契数列
  • 常见例题

几何A

  • 库实数类实现(双精度)
  • 平面几何必要初始化
    • 字符串读入浮点数
    • 预置函数
    • 点线封装
    • 叉乘
    • 点乘
    • 欧几里得距离公式
    • 曼哈顿距离公式
    • 将向量转换为单位向量
    • 向量旋转
  • 平面角度与弧度
    • 弧度角度相互转换
    • 正弦定理
    • 余弦定理(已知三角形三边,求角)
    • 求两向量的夹角
    • 向量旋转任意角度
    • 点绕点旋转任意角度
  • 平面点线相关
    • 点是否在直线上(三点是否共线)
    • 点是否在向量(直线)左侧
    • 两点是否在直线同侧/异侧
    • 两直线相交交点
    • 两直线是否平行/垂直/相同
    • 点到直线的最近距离与最近点
    • 点是否在线段上
    • 点到线段的最近距离与最近点
    • 点在直线上的投影点(垂足)
    • 线段的中垂线
    • 两线段是否相交及交点
  • 平面圆相关(浮点数处理)
    • 点到圆的最近点
    • 根据圆心角获取圆上某点
    • 直线是否与圆相交及交点
    • 线段是否与圆相交及交点
    • 两圆是否相交及交点
    • 两圆相交面积
    • 三点确定一圆
    • 求解点到圆的切线数量与切点
    • 求解两圆的内公、外公切线数量与切点
  • 平面三角形相关(浮点数处理)
    • 三角形面积
    • 三角形外心
    • 三角形内心
    • 三角形垂心
  • 平面直线方程转换
    • 浮点数计算直线的斜率
    • 分数精确计算直线的斜率
    • 两点式转一般式
    • 一般式转两点式
    • 抛物线与 x 轴是否相交及交点

几何B

  • 平面多边形
    • 两向量构成的平面四边形有向面积
    • 判断四个点能否组成矩形/正方形
    • 点是否在任意多边形内
    • 线段是否在任意多边形内部
    • 任意多边形的面积
    • 皮克定理
    • 任意多边形上/内的网格点个数(仅能处理整数)
  • 二维凸包
    • 获取二维静态凸包(Andrew 算法)
    • 二维动态凸包
    • 点与凸包的位置关系
    • 闵可夫斯基和
    • 半平面交

几何C

  • 三维几何必要初始化
    • 点线面封装
    • 其他函数
  • 三维点线面相关
    • 空间三点是否共线
    • 四点是否共面
    • 空间点是否在线段上
    • 空间两点是否在线段同侧
    • 两点是否在平面同侧
    • 空间两直线是否平行/垂直
    • 两平面是否平行/垂直
    • 空间两直线是否是同一条
    • 两平面是否是同一个
    • 直线是否与平面平行
    • 空间两线段是否相交
    • 空间两直线是否相交及交点
    • 直线与平面是否相交及交点
    • 两平面是否相交及交线
  • 点到直线的最近点与最近距离
    • 点到平面的最近点与最近距离
    • 空间两直线的最近距离与最近点对
  • 三维角度与弧度
    • 空间两直线夹角的 cos 值
    • 空间两平面夹角的 cos 值
    • 直线与平面夹角的 sin 值
  • 空间多边形
    • 正N棱锥体积公式
    • 四面体体积
    • 点是否在空间三角形上
    • 线段是否与空间三角形相交及交点
    • 空间三角形是否相交
  • 常用结论
    • 平面几何结论归档
    • 立体几何结论归档
  • 常用例题
    • 将平面某点旋转任意角度
    • 平面最近点对(set 解)
    • 平面若干点能构成的最大四边形的面积(简单版,暴力枚举)
    • 平面若干点能构成的最大四边形的面积(困难版,分类讨论+旋转卡壳)
    • 线段将多边形切割为几个部分
    • 平面若干点能否构成凸包(暴力枚举)
    • 凸包上的点能构成的最大三角形(暴力枚举)
    • 凸包上的点能构成的最大四角形的面积(旋转卡壳)
    • 判断一个凸包是否完全在另一个凸包内

多项式

  • 多项式封装
  • 离散傅里叶变换 dft 与其逆变换 idft
  • Berlekamp-Massey 算法(杜教筛)
  • Linear-Recurrence 算法
  • 快速傅里叶变换 FFT
  • 快速数论变换 NTT
  • 拉格朗日插值
  • 常用结论
    • 普通生成函数 / OGF
    • 指数生成函数 / EGF

数据结构A

  • 并查集(全功能)
  • 树状数组
    • 常规(单点增减+区间和查询)
    • 逆序对扩展
    • 前驱后继扩展(常规+第 k 小值查询+元素排名查询+元素前驱后继查询)
    • 最值查询扩展(常规+区间最值查询+单点修改)
  • 二维树状数组
  • 线段树
    • 完整长封装
    • 快速线段树(单点修改+区间最值)
    • 区间加法修改、区间最小值查询、区间合并
    • 同时需要处理区间加法与乘法修改
    • 区间赋值/推平
    • 区间取模
    • 区间异或修改
    • 拆位运算
  • 坐标压缩与离散化
    • 简单版本
    • 封装
  • 轻重链剖分/树链剖分
  • 普通莫队
  • 带修改的莫队(带时间维度的莫队)
  • 分数运算类
  • 主席树(可持久化线段树)
  • KD Tree
  • ST 表

数据结构B

  • 基于状压的线性 RMQ 算法
  • pbds 扩展库实现平衡二叉树
  • vector 模拟实现平衡二叉树
  • 线性基(高斯消元法)
  • 珂朵莉树 (OD Tree)
  • 取模类
  • 大整数类(高精度计算)
  • 常见结论
  • 常见例题

动态规划

  • 01背包
  • 完全背包
  • 多重背包
  • 混合背包
  • 二维费用的背包
  • 分组背包
  • 有依赖的背包
  • 背包问题求方案数
  • 背包问题求具体方案
  • 数位 DP
  • 状压 DP
  • 常用例题

  • 子串与子序列
  • 字符串模式匹配算法 KMP
    • 全串匹配
    • 统计原串中某个子串重复出现的次数(例题)
  • Z函数(扩展 KMP)
  • 最长公共子序列 LCS
    • 小数据解
    • 大数据解
  • 字符串哈希
    • 双哈希封装
    • 前后缀去重
  • 马拉车
  • 字典树 trie
    • 基础封装
    • 01 字典树
  • 后缀数组 SA
  • AC 自动机
  • 回文自动机 PAM(回文树)
  • 后缀自动机 SAM

博弈论

  • 巴什博奕
  • 扩展巴什博弈
  • Nim 博弈
  • Nim 游戏具体取法
  • Moore’s Nim 游戏(Nim-K 游戏)
  • Anti-Nim 游戏(反 Nim 游戏)
  • 阶梯 - Nim 博弈
  • SG 游戏(有向图游戏)
  • Anti-SG 游戏(反 SG 游戏)
  • Lasker’s-Nim 游戏( Multi-SG 游戏)
  • Every-SG 游戏
  • 威佐夫博弈
  • 斐波那契博弈
  • 树上删边游戏
  • 无向图删边游戏(Fusion Principle 定理)

常用例题

  • 逆序对(归并排序解)
  • 统计区间不同数字的数量(离线查询)
  • 选数(DFS 解)
  • 网格路径计数
  • 德州扑克
  • N*M 数独字典序最小方案
  • 高精度进制转换
  • 物品装箱
    • 从前往后装(线段树解)
    • 选择最优的箱子装(multiset 解)
  • 浮点数比较

STL 与库函数

  • pb_ds 库头文件
  • 查找后继 lower_bound、upper_bound
  • 数组打乱 shuffle
  • 二分搜索 binary_search
  • 批量递增赋值函数 iota
  • 数组去重函数 unique
  • 位运算函数 __builtin_
  • 数字转字符串函数
  • 字符串转数字
  • 全排列算法 next_permutation、prev_permutation
  • 字符串转换为数值函数 sto
  • 数值转换为字符串函数 to_string
  • 判断非递减 is_sorted
  • 累加 accumulate
  • 迭代器 iterator
  • 容器与成员函数
    • 元组 tuple
    • 数组 array
    • 变长数组 vector
    • 栈 stack
    • 队列 queue
    • 双向队列 deque
    • 优先队列 priority_queue
    • 字符串 string
    • 有序、多重有序集合 set、multiset
    • map、multimap
    • bitset
    • 哈希系列 unordered
    • 对 pair、tuple 定义哈希
    • 对结构体定义哈希
    • 对 vector 定义哈希
  • 程序标准化
    • 使用 Lambda 函数
    • 使用构造函数

杂类

  • 阿达马矩阵 (Hadamard matrix)
  • 幻方
  • 最长严格/非严格递增子序列 (LIS)
    • 一维
    • 二维+输出方案
  • cout 输出流控制
  • 读取一行数字,个数未知
  • 约瑟夫问题
  • 日期换算(基姆拉尔森公式)
  • 单调队列
  • 高精度快速幂
    • 魔改十进制快速幂(暴力计算)
    • 扩展欧拉定理(欧拉降幂公式)
  • 快读
  • int128 输入输出流控制
  • 对拍版子
  • 随机数生成与样例构造
  • 手工哈希
  • Python常用语法
    • 读入与定义
    • 格式化输出
    • 排序
    • 文件IO
    • 自定义结构体
    • 数据结构
    • 其他
  • OJ测试
    • GNU C++ 版本测试
    • 编译器位数测试
    • 评测器环境测试
    • 运算速度测试
  • 编译器设置