santisify Site

Back

jiangly算法模板收集Blur image

声明#

2024.03.31 Update:新增《Splay(其三)》。

历史更新记录

2024.02.21 Update:文件层级重构,新增《后缀自动机(SuffixAutomaton 旧版)》、《回文自动机(PAM)》

龙年快乐~

2023.12.29 Update:新增《树状数组(Fenwick 新版)》。

2023.12.16 Update:新增《库函数重载》《二项式(Binomial 任意模数计算)》《线性基(Basis)》《线段树(其四)》《Splay(其二)》。

欢迎通过各种渠道向我投稿~

2023.11.02 Update:最新版本都更新在 GitHub 了,但是注意到有些群u貌似不方便Fan Qiang,于是现在跟进上了 GitHub 的项目进度。

自用!非本人原创,仅作整理归档。大部分代码来自于 CodeForces Jiangly 的提交,部分来自于GYM、牛客、Atcoder。文章博客链接文章 GitHub 链接

灵感参考链接:beiyouwuyanzu/cf_code_jiangly


目录#

目录


一、杂类#

01 - int128 输出流自定义#

2023-03-20

using i128 = __int128;

std::ostream &operator<<(std::ostream &os, i128 n) {
    std::string s;
    while (n) {
        s += '0' + n % 10;
        n /= 10;
    }
    std::reverse(s.begin(), s.end());
    return os << s;
}
cpp

02 - 常用库函数重载#


二、图与网络#

01 - 强连通分量缩点(SCC)#

2023-06-18

02 - 割边与割边缩点(EBCC)#

2023-05-11

03 - 二分图最大权匹配(MaxAssignment 基于KM)【久远】#

2022-04-10

04 - 一般图最大匹配(Graph 带花树算法)【久远】#

2021-12-24

05 - TwoSat(2-Sat)#

2023-09-29

06A - 最大流(Flow 旧版其一,整数应用)#

2022-09-03

06B - 最大流(Flow 旧版其二,浮点数应用)#

2022-04-09

06C - 最大流(MaxFlow 新版)#

2023-07-21

07A - 费用流(MCFGraph 最小费用可行流)#

2022-12-12

07B - 费用流(MCFGraph 最小费用最大流)#

代码同上,但是需要注释掉建边限制。以下为参考:

void addEdge(int u, int v, int c, int f) { // 可行流
    if (f < 0) {
        g[u].push_back(e.size());
        e.emplace_back(v, 0, f);
        g[v].push_back(e.size());
        e.emplace_back(u, c, -f);
    } else {
        g[u].push_back(e.size());
        e.emplace_back(v, c, f);
        g[v].push_back(e.size());
        e.emplace_back(u, 0, -f);
    }
}
c
void addEdge(int u, int v, int c, int f) { // 最大流
    g[u].push_back(e.size());
    e.emplace_back(v, c, f);
    g[v].push_back(e.size());
    e.emplace_back(u, 0, -f);
}
c

08 - 树链剖分(HLD)#

2023-08-31


三、数论、几何、多项式#

01 - 快速幂#

2023-10-09

int power(int a, i64 b, int p) {
    int res = 1;
    for (; b; b /= 2, a = 1LL * a * a % p) {
        if (b % 2) {
            res = 1LL * res * a % p;
        }
    }
    return res;
}
cpp

02 - 欧拉筛#

2023-08-29

03 - 莫比乌斯函数筛(莫比乌斯函数/反演)#

2023-03-04

04 - 求解单个数的欧拉函数#

2023-10-09

int phi(int n) {
    int res = n;
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            while (n % i == 0) {
                n /= i;
            }
            res = res / i * (i - 1);
        }
    }
    if (n > 1) {
        res = res / n * (n - 1);
    }
    return res;
}
cpp

05 - 扩展欧几里得(exGCD)#

2023-10-09

int exgcd(int a, int b, int &x, int &y) {
    if (!b) {
        x = 1, y = 0;
        return a;
    }
    int g = exgcd(b, a % b, y, x);
    y -= a / b * x;
    return g;
}
cpp

06 - 组合数(Comb+MInt & MLong)#

2023-08-26

07 - 二项式(Binomial 任意模数计算)#

2023-08-22

08 - 素数测试与因式分解(Miller-Rabin & Pollard-Rho)#

2023-05-16

09 - 平面几何#

2023-07-17

长度过长,点击查看

10 - 静态凸包#

2023-04-09

11A - 多项式相关(Poly 旧版)#

2023-02-06

长度过长,点击查看

11B - 多项式相关(Poly+MInt & MLong 新版)#

2023-09-20

长度过长,点击查看


四、数据结构#

01A - 树状数组(Fenwick 旧版)#

2023-08-11

01B - 树状数组(Fenwick 新版)#

2023-12-28

02 - 并查集(DSU)#

2023-08-04

03A - 线段树(SegmentTree 基础区间加乘)#

2023-10-18

03B - 线段树(SegmentTree+Info 查找前驱后继)#

2023-08-11

03C - 线段树(SegmentTree+Info+Merge 区间合并)#

2022-04-23

04A - 懒标记线段树(LazySegmentTree 基础区间修改)#

2023-07-17

长度过长,点击查看

04B - 懒标记线段树(LazySegmentTree 查找前驱后继)#

2023-07-17

长度过长,点击查看

04C - 懒标记线段树(LazySegmentTree 二分修改)#

2023-03-03

长度过长,点击查看

05A - 取模类(MLong & MInt)#

2022-06-12

05B - 取模类(MLong & MInt 新版)#

2023-08-14

根据输入内容动态修改 MOD 的方法:Z::setMod(p);

长度过长,点击查看

06 - 状压RMQ(RMQ)#

2023-03-02

07 - Splay#

2023-02-15

2023-09-30

2024-03-30

08 - 其他平衡树#

2023-08-04

2023-08-26

2023-04-03

2023-07-31

09 - 分数四则运算(Frac)#

2023-04-23

10 - 线性基(Basis)#

2023-12-03


五、字符串#

01 - 马拉车(Manacher)#

2023-05-14

02 - Z函数#

2023-08-11

std::vector<int> zFunction(std::string s) {
    int n = s.size();
    std::vector<int> z(n + 1);
    z[0] = n;
    for (int i = 1, j = 1; i < n; i++) {
        z[i] = std::max(0, std::min(j + z[j] - i, z[i - j]));
        while (i + z[i] < n && s[z[i]] == s[i + z[i]]) {
            z[i]++;
        }
        if (i + z[i] > j + z[j]) {
            j = i;
        }
    }
    return z;
}
cpp

03 - 后缀数组(SA)#

2023-03-14

04A - 后缀自动机(SuffixAutomaton 旧版)#

2022-08-17

04B - 后缀自动机(SAM 新版)#

2023-05-27

05 - 回文自动机(PAM)#

2023-05-19

06A - AC自动机(AC 旧版)#

2021-07-07

06B - AC自动机(AhoCorasick 新版)#

2023-04-07

07 - 随机生成模底 字符串哈希(例题)#

2022-06-09

本文转自 https://www.cnblogs.com/WIDA/p/17633758.html#01b---%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84fenwick-%E6%96%B0%E7%89%88,如有侵权,请联系删除。

jiangly算法模板收集
https://santisify.top/blog/old/jiangly-template
Author santisify
Published at August 8, 2024
Comment seems to stuck. Try to refresh?✨