备注其一:正在整理中,内容不全,部分代码测试次数较少或还未在OJ上尝试,可能会有代码不健全的情况发生。
备注其二:部分图片来自百度百科、wiki百科。
备注其三:优快云一天只能上传十篇blog...只能慢慢传了。
备注其四:中间修改了(咕咕咕)了好长时间,目录又发生了一些变化。。。
友情链接:https://blog.youkuaiyun.com/Adolphrocs/article/details/82794494。
目录
扩展欧几里得
递归实现
递推实现
得到(0, mod]之间最小同余整数
得到[-mod, 0)之间最大同余整数
一元线性同余方程(Linear Congruence Equation)
多元一次不定方程(丢番图方程)求解
中国剩余定理 (Chinese Remander Theorem, CRT)
扩展中国剩余定理 (扩展CRT)
勾股数组
本源勾股数组枚举方法(其一)
本源勾股数组枚举方法(其二)
相关性质
寻找最小数为奇数的勾股数组的快速方法
已知一条直角边构造勾股数组
费马大定理 (Le dernier théorème de Fermat)
费马小定理 (Fermat's little theorem)
欧拉定理
扩展欧拉定理
卡迈克尔函数
卡迈克尔数
取模逆元(模反元素)
互素情形
非互素情形
欧拉线性筛素数法
威尔逊定理
最小质因子
欧拉线性筛打表实现
Miller-Rabin Primality Test(米勒-罗宾随机素性测试)
静态素数证据表实现(非随机数实现)
使用Java大数类判断素数
欧拉函数
质因数分解实现(适用于单次求值)
打表实现
欧拉函数的性质
σ因数和函数
整数分拆
杜教筛
斐波那契数列
定义
前缀和性质
广义斐波那契数列 (Generalizations of Fibonacci numbers)
卢卡斯数列
卢卡斯定理
推论
Numerical Methods(数值方法)
表达式重构解决有效数字缺失问题
高精度平方根
牛顿迭代法实现
Gauss(高斯)消元法
整数快速模幂法(逐次平方法)
三分法
模拟退火
康托展开
Catalan Number (卡特兰数)
通项公式
递推关系
渐进关系
相关问题
卡特兰数扩展问题
字典序下一个排列
STL内置函数
范德蒙恒等式
推论
杨辉恒等式
纵向递推式
横向递推式
对称表达式
组合聚合性恒等式
推论
二项式定理
推论
多重集合排列数
无限多重集
有限多重集
多重集合组合数
无限多重集
有限多重集
错排公式
Data Structure(数据结构)
有向树
Segment Tree (线段树)
K-D Tree(K维树)
Binary Indexed Tree(Fenwick Tree,树状数组)
二维树状数组【待补充初始化函数】
AVL Tree
Red Black Tree(红黑树)
Trie (字典树)
Static Naïve implementation(静态数组实现)
Map and Vector implementation(STL实现)
Class Implementation Using map and vector
Interval Tree(区间树)
Chtholly Tree(珂朵莉树)【简化版区间树+STL map】
Naïve Implementation(简单实现)
Efficient Implementation(高效实现)
树链剖分
块状链表
舞蹈链 (DLX, Dancing Links)
可持久化线段树
可持久化块状数组
可持久化字典树
可持久化平衡树
Graph (图)
Topological sort(拓扑排序)
最小字典序拓扑排序
Floyd判圈算法 (Floyd Cycle Detection Algorithm)
差分约束系统【待验证】
仙人掌图
无权二分图匹配
匈牙利算法 (Hungary Algorithm)
Hopcroft-Karp算法
二分图最大独立集与最大团
带权二分图匹配
EK算法
Shortest Path(最短路)
Dijkstra’s algorithm
SPFA【注:计数部分有待测试】
Floyd-Warshall Algorithm
次短路
改版Dijkstra algorithm解决
网络流
最大流
最小割
Tree(树)
Euler tour(树的欧拉遍历序列)
完全二叉树判断
斯坦纳树
最小生成树
String(字符串)
Levenshtein距离(编辑距离)
LCS(最长公共子序列)距离
Jaro距离
汉明距离
Damerau-Levenshtein距离
Brute Force Pattern Search(暴力匹配)
KMP (Knuth Morris Pratt) Pattern Searching
拼接串(KMP应用)
Manacher Algorithm(线性最长回文子串算法)
Z algorithm【待测试】
Rabin-Karp Algorithm(字符串Hash)
ELFHash
Pattern Searching in Finite Automata(有限状态自动机模式匹配)
Boyer Moore Algorithm(BM算法)
Bad Character Heuristic implementation (occurrence heuristic)
Good Suffix Heuristic implementation (match heuristic)
Using both bad and good heuristic(同时使用上面两种信息)
Boyer-Moore-Galil implementation(最差时具有线性复杂度)
Aho-Corasick Algorithm(AC自动机)
Trie图
Fail树 (Fail Tree)
后缀数组 (Suffix Array)
倍增构造法
DC3线性构造法
正则表达式【部分比赛环境无法使用】
常用表达式查询表
C语言中使用正则表达式
高精度
BigInteger(高精度整数)
C++版本
Java版本常用方法说明
BigDecimal(高精度小数)
C++版本
Java版本常用方法说明
分数类
复数类
选择
二类划分(Partition)【待测试】
median-of-three版本
指定枢轴值版本
区间k小/大元
排序解决
使用小/大顶堆解决
带旋转的Treap解法
分块法
划分树解法
主席树解法
BFPRT算法(中位数之中位数算法, Median of medians)
整体二分
CDQ分治
查找
二分法
lower bound implementation
upper bound implementation
搜索
DFS
BFS
同权值结点一次性出队的方法
双向BFS
meet-in-median
A* Algorithm(A*算法)
IDA (Iterative Deeping A)
IDA* (Iterative Deeping A*)
动态规划 (Dynamic Programming)
最长上升子序列 (Longest Increasing Sequence, LIS)
最大和值最长上升子序列 (Maximum Sum Increasing Subsequence, MSIS)
最长下降子序列 (Longest Decreasing Sequence, LDS)
最长非连续回文子序列 (Longest Palindrome Substring, LPS)
最长公共子序列 (Longest Common Subsequence, LCS)
最长重复子序列 (Longest Repeated Subsequence, LRS)
最短编辑距离 (Shortest Edit Distance)
最大连续子段和 (Maximum Subarray Sum, MSS)
0/1 背包
谜题与技巧 (Puzzles and Tricks)
投掷鸡蛋问题 (Dropping Egg Puzzle)
骨牌覆盖问题 (Tiling Problem)
n * 2地图用1 * 2骨牌覆盖(可旋转)
n * 3地图用1 * 2骨牌覆盖(可旋转)
n * 2地图用1 * 2骨牌和2 * 2骨牌覆盖(可旋转)
n * 4地图用1 * 2骨牌覆盖(可旋转)
n * m地图用1 * 2骨牌覆盖(可旋转)
n * m地图用1 * 2和1 * 1骨牌覆盖(可旋转)
约瑟夫问题 (Josephus problem)
扩展约瑟夫问题 (Enhanced Josephus problem)
阶乘因数计数
差分
前缀和与后缀和
一维前缀和与后缀和
二维前缀和与后缀和
n维前缀和与后缀和
树形前缀和
尺取法
莫队算法 (Mo’s Algorithm)
井字棋博弈 (Tic-Tac-Toe Game)
博弈
MiniMax算法(极小化极大化算法,MM算法)
α-β剪枝
策梅洛定理 (Zermelo's theorem)
Nim游戏
SG函数与SG定理
贝亚蒂定理 (Beatty Sequence)
威佐夫博弈
生成和构造 (Generating and Construction)
幻方构造
格雷码 (Gray Code)
黄金分割比
Java高精度版
常数π生成
一般方法
数值方法
常数e生成
Calendar(日历)
公历瑞年判断与计数
判断规则
计数方法
Zeller formula (蔡勒公式)【待测试】
儒略历时期公式
集合
闵可夫斯基和
平面几何
实用函数
平方函数
符号函数
误差修正
精度
-0修正
符号函数
等于误差修正
比较误差修正
定义域修正
二维向量类(平面点类)
基向量旋转公式
浮点向量类
整数向量类
角度
角度弧度换算
距离
Euclidean Distance(欧氏距离)
Manhattan Distance(曼哈顿距离)
Chebyshev Distance(切比雪夫距离)
二维线性变换(2D Linear Transformation)
旋转
90°旋转
缩放
正交投影(Orthogonal projection)
镜像
剪切(shear)
线段 (Segment)
点到直线距离
点到线段距离
线段到线段距离
点在直线上的投影(垂足)
过一点作直线的垂线
直线平行判断
判断点是否在直线上
判断点是否在线段上
判断点是否在射线上
直线相交检测
射线相交检测
线段相交检测
线段与线段交点
直线法向平移
三角形
三角形面积
四边形
四边形面积
多边形 (Polygon)
数据类型
判断点是否在多边形内
半平面交
圆 (Circle)
数据类型
圆与直线交点
圆与圆交点【Note: 证明有待补充】
点阵
水平翻转
竖直翻转
顺时针旋转90°
顺时针旋转180°
逆时针旋转90°
凸包
Graham Scan Method
单调链法
分治法
Akl-Toussaint heuristics method
三维几何
混合积(Triple Product)
三维向量类(三维点类)
罗德里格旋转公式
三维线性变换(3D Linear Transformation)
旋转
缩放
正交投影(Orthogonal projection)
镜像
剪切(shear)
平行六面体
平行六面体体积
I/O
Fast cin/cout
Fast I/O class
EOF Valid Version
Basic Input Version
附录A-100以内阶乘(factorials)
附录B-2的100以内次幂
附录C-100以内欧拉函数值
附录D-前100个素数
附录E-三角公式
基本关系
和差角公式
欧拉公式
正弦定理
余弦定理
辅助角公式
附录F-变换
线性变换
仿射变换
可逆变换
等角变换
正交变换
刚体变换
欧式变换
变换所具有的性质
变换矩阵的构造
变换矩阵的组合
附录G-解析几何公式
定比分点公式
附录H-对拍、批处理与数据生成器
Windows
对拍批处理
批量输入数据文件生成
批量输出结果文件生成
随机数
Linux
pause
对拍
批量输入数据文件生成
随机数
平台通用
C++随机数据生成器
附录I-Linux简单操作
打开文件夹
创建文件夹
调用编译器
控制台输入文件结尾标识
显示当前路径
附录J-微积分
差分运算
前向差分
逆向差分
差分序列还原
附录K-溢出检测
加法溢出检测
无符号数运算
有符号数运算
减法溢出检测
乘法溢出检测
逆运算检测
扩位后截断检测
附录L-乘法公式
三数和平方公式
平方和公式
平方差公式
立方和差公式
附录M-杨辉三角