本仓库主要提供 ACM、OI、OJ、PAT、CSP 题目中常见算法和数据结构的实现,它们都以基于 C++11 语法的 C++接口的形式呈现。如果有问题或者感觉我的代码中有 bug,可以随时提 issue。
注意,本仓库不负责讲解任何相关知识点,有关知识点的讲解和汇总可参考OI wiki。目前代码仓库还在完善中,部分模板代码还没有完全更新,之后还会添加一批新的模板代码,敬请期待!
gg
:表示long long
类型。本代码仓库中所有整型数据均使用long long
类型存储,之所以不用int
是因为int
很容易造成数据溢出错误。为了编码方便,可以为long long
定义一个类型别名gg
,代码可以是using gg = long long
。本代码仓库中所有代码均默认导入了这行定义类型别名的代码,即本代码仓库中所有的gg
均表示long long
类型。MAX
:表示问题数据规模的上限。本仓库的代码经常会开一个非常大的全局数组,长度即为MAX
。在使用这样的代码时,你需要在定义这个数组之前定义并初始化MAX
变量,代码可以是constexpr gg MAX = 1e6 + 5
。INF
:表示一个正无穷大的正整数。在使用含有INF
的代码时,你需要在定义这个数组之前定义并初始化INF
变量,代码可以是constexpr gg INF = 2e18
。相应地,负无穷小可以用-INF
表示。ni
、mi
等:表示输入序列所包含的元素个数。例如,ni
变量代表输入一维数据的总数,ni
、mi
分别表示输入二维数据两个维度上的总数,等等。后缀i
是input
的缩写,表明该变量是由输入指定的,以此与普通的n
、m
等变量相区分。
因此,运行本仓库代码前的默认依赖定义如下:
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
constexpr gg MAX = 1e6 + 5;
constexpr gg mod = 1e9 + 7;
constexpr gg INF = 2e18;
constexpr double thre = 1e-7; //用以判断两个浮点数是否相等的阈值
gg ti, ni, mi, ki, di, pi, xi, yi;
有关知识点的讲解和汇总可参考OI wiki,有关练习题目可参考一个动态更新的洛谷综合题单。本仓库主要参考了这两个网站的内容,在此对 OI wiki 和综合题单的撰写者和维护者表示诚挚的谢意。
感谢CitySkylines对仓库代码中的 bug 的提醒。