模板目录

3. 专题和知识点详细内容

​ 下面用表格的形式列出了竞赛中用到的算法知识点,约300个。

​ 本文作者估计,铜牌和银牌需要约200个知识点,其他的是金牌。

​ **注:**表格中的“典型题”,不一定是模板题,只作为进一步了解的参考。

3.1. 数学Mathematics

3.1.1数论Number Theory

知识点 英文 典型题 说明
GCD、LCM 1
素数判断 Primality tests poj 2689 判断某个数是否为素数计算区间内素数的个数 1
素数生成 Prime Number Generation hdu4548 筛Sieve分段筛Segmented Sieve欧拉筛法 1
分解质因数 Integer factorization hdu6287 1
欧拉定理 Euler Totient Theorem hdu1395 1
费马小定理 Fermat’s Theorem hdu4704 逆元 1
扩展欧几里得算法 Extended Euclid hdu1576 求ax+by=gcd的解以及逆元 1
逆元 Inverse 扩展欧几里得、欧拉函数 1
随机素数测试和大数分解 poj 1811 1
高斯消元 Gaussian elimination hdu5755 浮点数高斯消元求方程组的解 3
模线性方程组 hdu3797 1
佩尔方程 Pell’s equation hdu 3292 3
整数拆分 Integer Factorization hdu 4651/4658 1
求AB的约数之和对MOD去模 sum of divisors poj 1845 1
大步小步算法 Baby-Step Giant-Step POJ 2417,3243 1
斐波那契数列取模 Periodicity modulo p hdu1021 循环节 1
原根 primitive root HDU4992 1
快速数论变换 NTT HDU4656卷积取模 3
线性丢番图方程 Linear Diophantine Equations 1
模运算 Modulus Arithmetic 1
卢卡斯定理 Lucas Theorem hdu5226 1
中国剩余定理 Chinese Remainder Theorem hdu3430 1
威尔逊定理 Wilson Theorem hdu5391 1
米勒-罗宾随机素性测试 Miller - Rabin Primality Testing hdu4910 1
完全数 Perfect Numbers hdu2683 1
哥德巴赫猜想 Goldbach Conjecture hdu1397 -1
连分数 Continued fraction hdu4188 3

3.1.2概率Probability

知识点 英文 典型题 说明
基本概率和条件概率 Basic Probability and Conditional Probability hdu1204
随机变量 Random Variables hdu1145
概率生成函数 Probability Generating Functions
期望 Expectation hdu5984
概率分布 Probability Distribution poj3716 Binomial, Poisson, Normal,Bernoulli

3.1.3组合数学Counting

特殊计数Special Numbers [Stirling,Fibonacci,Catalan, Eulerian, Harmonic, Bernoulli]

知识点 英文 典型题 说明
容斥原理鸽巢原理乘法原理 Inclusion ExclusionPigeonhole principle hdu2204hdu1205hdu5525 1
stirling数 hdu4372 1
Catalan数 hdu5673 1
斐波拉契数 hdu1316 1
Polya计数 Polya Counting hdu3547 2
莫比乌斯反演 MoBius inversion hdu5382 2
母函数 Generating function hdu2082/2065 普通型、指数型3
调和级数 harmonic number poj1003 -1
幻方 Magic Square hdu 3927
N皇后 hdu2553

3.1.4线性代数Linear Algebra

知识点 英文 典型题 说明
矩阵的加减 Addition And Subtraction Of Matrices hdu3521
矩阵变换 Matrix Transformations hdu5671
矩阵的行列式、秩和逆 Determinant , Rank and Inverse Of Matrix hdu5852
线性方程组的求解 Solving System Of Linear Algeraic Equations
矩阵求幂 Matrix Exponentiation hdu1757
特征值和特征向量 Eigenvalues And Eigen vector
多项式的根 Roots of a polynomial hdu1296
拉格朗日插值 Lagrange Interpolation hdu6253
线性基 hdu3949

3.1.5组合游戏(博弈论)Game Theory

知识点 英文 典型题 说明
尼姆游戏 Nim game hdu2176
P-position、N-position
图游戏与SG函数 sprague-Grundy 函数 hdu3023
Hackenbush游戏 hdu3197
威佐夫游戏 Wythoff’s game hdu2177

3.1.6群论Group Theory

知识点 英文 典型题 说明
伯恩赛德引理 Burnside’s lemma hdu4633
波利亚定理 Polya’s Theorem hdu3547
拉格朗日定理

3.1.7 高精度

知识点 英文 典型题 说明
大数加减乘除 Hdu1042 HDU 1134 求卡特兰数
大数取模
高精度阶乘
高精度幂
高精度进制转换
FFT高精度乘法
java高精度

3.1.8 计算方法

知识点 英文 典型题 说明
快速傅立叶变换 FFT hdu 4609
迭代法 hdu3809
三分法 hdu2899
定积分计算 hdu1071
自适应simpson积分 hdu 1724

3.2. 数据结构Data Structures

知识点 英文 典型题 说明
数组 Arrays
链表 Linked List
Stacks Hdu1237 手动栈
队列 Queues
优先队列、双端队列 Hdu1896
第k大元素 Hdu4006
块状链表 Hdu5193
Heap Hdu1280
哈希表、哈希数组 Hash Tables Hdu1880
逆序对 Hdu4911
跳跃表 Skip List Hdu5266
并查集 Disjoint-Set Hdu1182
字典树 Trie hdu2072
线段树 Segment Tree 一维Hdu1540二维Poj1195 一维、二维
周长并 Hdu1828
LCA Hdu2586
莫队算法 hdu5145 解决一类静态,离线区间查询问题
树状数组 Binary Index Tree Hdu2852N维树状数组Hdu3584
Trees
二叉树 Binary Tree hdu5444
平衡二叉树 balanced binary tree poj 2828
二叉排序树 Hdu3791
二叉搜索树 Binary Search Tree Hdu3791
Treap树 Hdu4099Poj 2985 静态建树、动态建树
伸展树 splay tree HDU1890、3726、4453poj 2892
笛卡尔树 Hdu4095
划分树 hdu44717 查询区间第 k 大
表达式树 hdu1805
RMQ Range Minimum/Maximum Query Hdu3183 一维RMQ、二维RMQ
树链剖分 hdu3966 点权、边权
动态树 LCT(link-cut-tree) hdu5002
左偏堆 Hdu1512
可并堆 Hdu1512
主席树 ZOJ 2112 查询区间多少个不同的数、静态区间第 k 大POJ2104、树上路径点权第 k 大、动态第 k 大
KD 树 K-demension tree HDU4347 K 近邻,模板题,求出最近的 K 个点
替罪羊树 ScapeGoat Tree poj1442
动态 KD 树 hdu5992 结合了 KD 树和替罪羊树
树套树 hdu5412

3.3. 搜索Searching与排序

3.3.1搜索

知识点 英文 典型题 说明
子集生成 hdu1584
线性搜索 Linear Search
折半检索 Binary Search
三分搜索 Ternary Search hdu2899
BFS
双向广搜 Hdu1401
广搜的状态优化 Hdu5025
A*算法 hdu1043
DFS
回溯、剪枝 Hdu1010
深搜的优化 Hdu2084
记忆化搜索 Hdu2602
IDA*算法 hdu4127
位运算 Hdu3711
按位压缩存储状态 Hdu5025
极大极小 hdu3683
利用M进制数存储状态 Hdu4267
舞蹈链 Dancing Links Poj2676

3.3.2. 排序Sorting

知识点 英文 典型题 说明
选择排序 Selection Sort
冒泡排序 Bubble Sort
插入排序 Insertion Sort
归并排序 Merge Sort
快速排序 Quick Sort
Quick Select 脱胎于快排
堆排序 Heap Sort hdu1280
计数排序 Counting Sort hdu1425
基数排序 Radix Sort Hdu1280
桶排序 Uva340

3.4.贪心 Greedy

知识点 英文 典型题 说明
常见问题
哈夫曼树 Hdu2527
模拟退火算法 hdu3007 结合概率
prim算法 hdu1102
kruskal算法 hdu1863
Dijkstra算法 hdu2066

3.5. 分治Divide & Conquer

知识点 英文 典型题 说明
最近点对 Closest Pair Points hdu1007
归并排序 Merge Sort
快速排序 Quick Sort
CDQ分治 hdu4456、4742 二维偏序问题三维偏序问题

3.6. 动态规划

3.6.1 经典问题Dynamic Programming Classical Problems

知识点 英文 典型题 说明
编辑距离 Edit Distance hdu4323
扔鸡蛋问题 Egg Dropping Puzzle poj3783
整数背包 Integer Knapsack Hdu2602
最大独立集 Largest Independent Set hdu2458
最长公共子序列 Longest Common Subsequence hdu1243
最长公共递增子序列 Hdu1423
最长公共子串 Longest Common Substring hdu1238
最长上升子序列 Longest Increasing Subsequence hdu1257
最长回文子序列 Longest Palindromic Subsequence hdu4745
最长回文子串 Longest Palindromic Substring hdu3294
最长不重复子字符串 Longest Substring Without Repeating Character hdu2668
矩阵链乘 Matrix Chain Multiplication hdu4686
最大正方形子矩阵 Max Size Square Submatrix hdu4846
最长链对 Maximum Length Chain Pairs
最大递增子序列和 Maximum Sum Increasing Subsequence hdu1087
最优二叉搜索树 Optimal Binary Search Tree hdu3791
回文分割 Palindrome Partition Problem hdu3613
Set Partition Problem
Subset Sum
Word Wrap Problem
最大两段子段和 Hdu2845
最大M子段和 Hdu1024
最长有序子序列 Hdu1160

3.6.2 高级DP 技术Dynamic Programming Advanced Techniques

知识点 英文 典型题 说明
数位dp Hdu2089
插头dp Ural1519、hdu4285
树型dp Hdu1520
区间dp Hdu4293
平行四边形优化 Poj1160
状压DP hdu6321
概率DP hdu3276
斯坦那树 hdu4085

3.7. 字符串 string algorithm

知识点 英文 典型题 说明
kmp Poj3167、3690
扩展kmp Hdu4763
后缀数组 Suffix array Hdu1403、5769
后缀树 Suffix tree hdu3518
AC自动机 Aho-Corasick hdu2222、4787
后缀自动机 hdu5558
回文串 Hdu4632 Manacher
确定有穷自动机 DFA Hdu3065
字符串hash hdu4622

3.8. 图论Graphs

3.8.1 图的存储Graph Representation

知识点 英文 典型题 说明
邻接矩阵 Adjacency Matrix
关联矩阵 Incidence Matrix
邻接表 Adjacency List
链式前向星

3.8.2 图的类型Graph Types

知识点 英文 典型题 说明
有向 Directed
无向 Undirected
有权 Weighted
无权 Unweighted
有向无环图 Directed Acyclic Graph(DAG)
哈密顿图 Hamilton hdu5424
欧拉图 Euler hdu5883

3.8.3 基于DFS的图算法 DFS & It’s Application

知识点 英文 典型题 说明
判圈 Cycle Detection
割点割边 Articulation Points
Bridges hdu4738
边双连通分量 Biconnectivity in Graph hdu4612
点双连通分量 hdu3394
强连通分量 Strongly Connected Component
有向图的强连通分量 Tarjan算法Kosaraju算法 hdu5934hdu1296
拓扑排序 Topological Sorting hdu2647
二分图判定 Bipartite Checking hdu4751
2-SAT hdu4115

3.8.4基于BFS的图算法BFS & It’s Application

知识点 英文 典型题 说明
最短路径 Shortest Path (No. Of Edges) 无权图
二分图判定 Bipartite Checking
连通分量 Connected Components

3.8.5最小生成树Minimum Spanning Tree

知识点 英文 典型题 说明
Prim’s Algorithm
Kruskal Algorithm
次小生成树 hdu4081
曼哈顿最小生成树 poj3241

3.8.6单源最短路算法Single Source Shortest-Path

知识点 英文 典型题 说明
Dijkstra(堆优化) hdu2860
Bellman Ford hdu1317
SPFA hdu2112
差分约束系统 hdu1531

3.8.7多源最短路All pair Shortest Path

知识点 英文 典型题 说明
Floyd Floyd Warshall’s Algorithm hdu4114

3.8.8欧拉路Euler Tour(有向图、无向图、混合图)

3.8.9最大流Flow

知识点 英文 典型题 说明
Ford-Fulkerson hdu3549
Edmonds-Karp hdu1532
最小费用最大流 Min Cost - Max Flow hdu3488 SPFA 版费用流
最小割 Stoer Wagner Min-Cut poj2914
ISAP hdu3549
dinic Dinic’s Algorithm hdu4975

3.8.10 其他问题

知识点 英文 典型题 说明
最小树形图 hdu2121
二分图匹配 Hdu3729 无权图:匈牙利算法带权图:KM算法、Hopcroft-Karp 算法
二分图多重匹配 hdu3605
最小路径覆盖问题 hdu1511
LCA hdu2586 dfs+ST 在线算法、离线 Tarjan 算法、LCA 倍增法
树分治 点分治HDU5016点分治HDU4918链分治HDU5039
生成树计数 hdu4305

3.9. 计算几何Computational Geometry

知识点 英文 典型题 说明
二维基本模板 点和向量;点积;叉积;点和线的关系;多边形;**三角形**内心、外心、重心、垂心;费马点;面积、周长、体积公式;判点在多边形、多面体内外;三角剖分;梯形剖分;多边形重心、多边形切割;多面体体积;坐标旋转
凸包 hdu1392
最近点对 hdu4631
旋转卡壳 hdu2202 对踵点
半平面交 hdu5462
最小圆覆盖 hdu3007
三维模板 三维点和向量、三维点积、三维叉积
最小球覆盖 poj2069
三维凸包 hdu4266

3.10. STL

​ vector、stack、queue、list、set、map、sort()等。

你可能感兴趣的:(模板目录)