AtCoder Library(ACL)使用教程

· · 科技·工程

介绍

AtCoder Library(ACL)是 AtCoder 官方对于算法竞赛中常见的一些模板进行编写,整合成了一个库。在参与 AtCoder 的比赛时可以直接使用。

第一步——下载:

此网址下载。

第二步——安装到编译器文件夹里:

以 Mingw64 为例。把文件夹 atcoder 直接拖进 mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++ 里即可。

第三步——前置工作:

C++ 版本:C++14 以上。

头文件:#incldue<atcoder/all>

使用命名空间:using namespace atcoder

需要在主函数加入下面的宏定义(任意一种即可):

第一种:

#define uint unsigned int
#define ll long long
#define ull unsigned long long

第二种:

typedef unsigned int uint;
typedef long long ll;
typedef unsigned long long ll ull;

第三种:

using uint=usigned int;
using ll=long long;
using ull=unsigned long long;

第四步——使用方法:

segtree

空。

lazy_segtree

建立:

lazy_segtree<S,op,e,F,mapping,composition,id>Segtree(int n/*建树数组的长度*/);
lazy_segtree<S,op,e,F,mapping,composition,id>Segtree(vector<S>v/*建树数组*/);

上两种方法任意一种都行。

其中,

S 是个结构体,包含你所需要维护的信息。

op 等同于手写线段树的 push_up 函数。

e 是结构体 S 的初始化函数。

F 是你修改时的数据类型。

mapping 的作用是合并区间 xy

composition 是区间 xy 的标记合并。

idF 的单位元。

使用:

void seg.set(int p, S x)//单点修改
S seg.get(int p)//单点查询
S seg.prod(int l, int r)//区间查
S seg.all_prod()//查所有
void seg.apply(int p, F f)//单点加
void seg.apply(int l, int r, F f)//区间加

other:

空。

若有错误麻烦指出。

其他没写是暂时自己写题解没用到。