Bryce1010 Acm模板

本文全面总结了ACM竞赛中的核心算法与数据结构知识,包括搜索、动态规划、图论等多个方面,并提供了丰富的训练题集与参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ACM模板

主要参考:kuangbin+f_zyj二者的模板+自己的总结,如需转载请注明出处
(本弱认为用kuangbin的就足够了,所以我也就不整理成文档了)

训练题集:

[kuangbin带你飞]专题一 简单搜索
[kuangbin带你飞]专题二 搜索进阶
搜索+剪枝
kuangbin专题三 Dancing Links
[kuangbin带你飞]专题四 最短路练习
[kuangbin带你飞]专题五 并查集
[kuangbin带你飞]专题六 最小生成树
[kuangbin带你飞]专题七 线段树
[kuangbin带你飞]专题九 连通图
[kuangbin带你飞]专题十 匹配问题
[kuangbin带你飞]专题十一 网络流
[kuangbin带你飞]专题十二 基础DP1
[kuangbin带你飞]专题十三 基础计算几何
kuangbin带你飞专题十四 数论基础
[kuangbin带你飞]专题十五 数位DP
[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher
[kuangbin带你飞]专题十七 AC自动机
[kuangbin带你飞]专题十八 后缀数组
[kuangbin带你飞]专题十九 矩阵
[kuangbin带你飞]专题二十 斜率DP
[kuangbin带你飞]专题二十一 概率&期望
[kuangbin带你飞]专题二十二 区间DP
[kuangbin带你飞]专题二十三 计算几何之半平面交
[kuangbin带你飞]专题二十四 二分 尺取 单调栈队列
[kuangbin带你飞]专题二十五 线段树 LCA 树链剖分(swpuacm)
[kuangbin]专题37 莫队算法 [Cloned]
专题 状态压缩DP
bryce1010专题训练——精选技巧倍增思想/ST表

大佬博客:

海岛BOLG

FTT教程

STL标准模板库

0.0 STL简介
0.1 STL pair
0.2 STL set
0.3 STL vector
0.4 STL string
0.5 STL stack
0.6 STL queue
0.7 STL map
0.8 upper_bound和lower_bound
0.9 STL bitset
0.10 greater< int>()和less< int>()
0.11 builtin_系列

1.String 字符串

1.1 字符串Hash
1.2 KMP算法(字符串匹配)
1.3 扩展KMP算法
1.4 Manacher(kuangbin)
1.5 AC自动机
1.6 后缀数组
1.6.1 DA
1.6.2 DC3
1.7 后缀自动机
1.7.1 基本函数
1.7.2 例题
strstr函数
求最长回文串四种解法
编辑距离
AC自动机
后缀自动机(SAM)

2. 数论

2.1 素数
2.1.1 素数筛选(判断 < MAXN的数是否是素数)
2.1.2 素数筛选(筛选出小于等于MAXN的素数)
2.1.3 大区间素数筛选
2.2 素数筛选和合数分解
2.2.1 质因数分解
2.3扩展欧几里得算法(求ax+by=gcd的解以及逆元)
2.4 求逆元
2.4.1 扩展欧几里得法
2.4.2 间接写法
2.4.3 利用欧拉函数
2.5 约数
2.7 欧拉函数
2.7.1 分解质因数求欧拉函数
2.7.2 筛法求欧拉函数
2.7.3 求单个的欧拉函数
2.7.4 线性筛
2.8 积性函数、莫比乌斯反演、狄利克雷卷积
2.9 本原勾股数
2.10 杜教BM模板


大数阶乘(分割法)
大数阶乘Stirling公式
线性方程组(高斯消元)
模线性方程组
素数测试(判断素数)
合数相关
求逆元
求原根
莫比乌斯反演
递推公式黑科技
约瑟夫环
博弈论
SG函数
杜教BM模板

3.数据结构

  1. 并查集
  2. 单调数据结构
    2.1 单调栈
    2.2 单调队列
  3. 划分树
  4. 左偏树
  5. 线段树
    51 单点更新+区间求和
    5.2 单点更新+区间求最值
    5.3 区间更新+区间求和
  6. 回文树
  7. 树状数组
    7.1 一维树状数组
    7.2 二维树状数组
  8. Splay树
  9. 动态树
    9.1 弹飞绵羊
  10. 可持久化结构
  11. Tire树
  12. CDQ 分治
  13. 莫队算法与分块
  14. KD-Tree
  15. 点分治

归并排序求逆序数


简单并查集的应用
数的Hash,串的Hash
哈夫曼树
trie树(静态建树,动态建树)
静态二叉检索树
RMQ
并查集的高级应用
KMP算法

4.图论

4.0 图论基础
4.1 最短路
4.1.1 Dijkstra单源最短路
4.1.2 Dijkstra算法+堆优化
4.1.3 单源最短路bell_ford算法
4.1.4 单源最短路SPFA
4.2 最小生成树
4.2.1 Prim 算法
4.2.2 Kruskal算法
4.3 次小生成树
4.4 有向图的强联通分量
4.4.1 Tarjan
4.4.2 Kosaraju
4.5 图的割点、桥和双连通分支的基本概念
4.6 割点与桥
4.6.1 模板
4.6.2 调用
4.7 边双联通分支
4.8 点双联通分值
4.9 最小树形图
4.10 二分图匹配
4.10.1邻接矩阵(匈牙利算法)
4.10.2 邻接表(匈牙利算法)
4.10.3 Hopcroft-Karp算法
4.11 二分图多重匹配
4.12 二分图最大权匹配(KM算法)
4.13 一般图匹配带花树
4.14 一般图最大加权匹配
4.15 生成树计数
4.16 最大流
4.16.1 SAP邻接矩阵形式
4.17最小费用最大流
4.18 2-SAT
4.18.1 染色法
4.18.2 强联通缩点法
4.19 曼哈顿最小生成树
4.20 LCA
4.20.1 dfs+ST在线算法
4.20.2 离线Tarjan算法
4.20.3 LCA倍增法
4.21 欧拉路
4.21.1 有向图
4.21.2 无向图
4.21.3 混合图
4.22 树分治
4.22.1 点分治HDU5016
4.22.2 点分治HDU4918
4.22.3 链分治 HDU5039
4.23 树上任意两点的距离

5.搜索

5.1 DFS和BFS模板
5.2 BFS

搜索+剪枝
最优化剪枝和可行性剪枝
记忆化搜索

6.动态规划

6.1 线性DP
6.2 背包
6.3 区间DP
6.4 树型DP
6.5 环形与后效性处理
6.6 状态压缩DP
6.7 倍增优化DP
6.8 数据结构优化DP
6.9 单调队列优化DP
6.10 斜率优化
6.11 四边形不等式
6.12 计数类DP
6.13 数位统计DP


6.1 最长公共子序列LCS
6.2 最长上升子序列(LIS)
6.3 数位DP
6.4 背包九讲
6.5 状压DP

7. 计算几何

7.1 凸包算法
7.2 三角形公式
7.3 二维计算几何模板

8. 精选技巧

8.1 快速幂及矩阵快速幂
8.2 矩阵运算
8.3 矩阵旋转
8.4 尺取法
8.5 NlogN求逆序数对
8.6 莫队算法与分块
8.7 离散化
8.8 倍增法/ST表
8.9 头文件模板(包括FASTIO)
8.10 斐波那契的矩阵解法
8.11 交互题目刷新缓存
8.12 Java大数模板
8.13 二分法
8.14 二分答案
8.15 折半枚举(双向搜索)

——最后更新于2018.6.14

1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 1.3 DFS 4 1.3.1 割顶 6 1.3.2 桥 7 1.3.3 强连通分量 7 1.4 最小点基 7 1.5 拓扑排序 7 1.6 欧拉路 8 1.7 哈密顿路(正确?) 9 1.8 Bellman-ford 9 1.9 差分约束系统(用bellman-ford解) 10 1.10 dag最短路径 10 1.11 二分图匹配 11 1.11.1 匈牙利算法 11 1.11.2 KM算法 12 1.12 网络流 15 1.12.1 最大流 15 1.12.2 上下界的网络的最大流 17 1.12.3 上下界的网络的最小流 17 1.12.4 最小费用最大流 18 1.12.5 上下界的网络的最小费用最小流 21 2 数论 21 2.1 最大公约数gcd 21 2.2 最小公倍数lcm 22 2.3 快速幂取模B^LmodP(O(logb)) 22 2.4 Fermat小定理 22 2.5 Rabin-Miller伪素数测试 22 2.6 Pollard-rho 22 2.7 扩展欧几里德算法extended-gcd 24 2.8 欧拉定理 24 2.9 线性同余方程ax≡b(mod n) 24 2.10 中国剩余定理 25 2.11 Discrete Logging(BL == N (mod P)) 26 2.12 N!最后一个不为0的数字 27 2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3 前缀和A[1]+…+A[p] 34 3.3.4 一个二维树状数组的程序 34 3.4 线段树 35 3.5 字符串 38 3.5.1 字符串哈希 38 3.5.2 KMP算法 40 4 计算几何 41 4.1 直线交点 41 4.2 判断线段相交 41 4.3 三点外接圆圆心 42 4.4 判断点在多边形内 43 4.5 两圆交面积 43 4.6 最小包围圆 44 4.7 经纬度坐标 46 4.8 凸包 46 5 Problem 48 5.1 RMQ-LCA 48 5.1.1 Range Minimum Query(RMQ) 49 5.1.2 Lowest Common Ancestor (LCA) 53 5.1.3 Reduction from LCA to RMQ 56 5.1.4 From RMQ to LCA 57 5.1.5 An<O(N), O(1)> algorithm for the restricted RMQ 60 5.1.6 An AC programme 61 5.2 最长公共子序列LCS 64 5.3 最长上升子序列/最长不下降子序列(LIS) 65 5.3.1 O(n^2) 65 5.3.2 O(nlogn) 66 5.4 Joseph问题 67 5.5 0/1背包问题 68 6 组合数学相关 69 6.1 The Number of the Same BST 69 6.2 排列生成 71 6.3 逆序 72 6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值