AtCoder Library(ACL)使用教程
HuangBarry · · 科技·工程
介绍
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 的作用是合并区间 x 和 y。
composition 是区间 x 和 y 的标记合并。
id 是 F 的单位元。
使用:
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:
空。
若有错误麻烦指出。
其他没写是暂时自己写题解没用到。