Home

Awesome

ACM、OI、OJ、PAT、CSP 题目常用代码模板

前言

本仓库主要提供 ACM、OI、OJ、PAT、CSP 题目中常见算法和数据结构的实现,它们都以基于 C++11 语法的 C++接口的形式呈现。如果有问题或者感觉我的代码中有 bug,可以随时提 issue。

注意,本仓库不负责讲解任何相关知识点,有关知识点的讲解和汇总可参考OI wiki。目前代码仓库还在完善中,部分模板代码还没有完全更新,之后还会添加一批新的模板代码,敬请期待!

默认代码

  1. gg:表示long long类型。本代码仓库中所有整型数据均使用long long类型存储,之所以不用 int 是因为 int 很容易造成数据溢出错误。为了编码方便,可以为long long定义一个类型别名gg,代码可以是using gg = long long。本代码仓库中所有代码均默认导入了这行定义类型别名的代码,即本代码仓库中所有的gg均表示long long类型
  2. MAX:表示问题数据规模的上限。本仓库的代码经常会开一个非常大的全局数组,长度即为MAX。在使用这样的代码时,你需要在定义这个数组之前定义并初始化MAX变量,代码可以是constexpr gg MAX = 1e6 + 5
  3. INF:表示一个正无穷大的正整数。在使用含有INF的代码时,你需要在定义这个数组之前定义并初始化INF变量,代码可以是constexpr gg INF = 2e18。相应地,负无穷小可以用-INF表示。
  4. nimi等:表示输入序列所包含的元素个数。例如,ni变量代表输入一维数据的总数,nimi分别表示输入二维数据两个维度上的总数,等等。后缀iinput的缩写,表明该变量是由输入指定的,以此与普通的nm等变量相区分。

因此,运行本仓库代码前的默认依赖定义如下:

#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 的提醒。