ACM-ICPC模板整理

备注其一:正在整理中,内容不全,部分代码测试次数较少或还未在OJ上尝试,可能会有代码不健全的情况发生。

备注其二:部分图片来自百度百科、wiki百科。

备注其三:优快云一天只能上传十篇blog...只能慢慢传了。

备注其四:中间修改了(咕咕咕)了好长时间,目录又发生了一些变化。。。

友情链接:https://blog.youkuaiyun.com/Adolphrocs/article/details/82794494

 

 

目录

Number Theory(数论)

扩展欧几里得

递归实现

递推实现

得到(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(高斯)消元法

整数快速模幂法(逐次平方法)

三分法

模拟退火

Combinatorics(组合数学)

康托展开

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-杨辉三角

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值