找回密码
 立即注册
首页 资源区 代码 【信息学奥赛|数据结构模板】线段树

【信息学奥赛|数据结构模板】线段树

毋峻舷 前天 08:35
下面是我的线段树模板,第一篇为纯加法,第二篇为加乘结合。
[code]#include #define MAXN 100010using namespace std;namespace segmentTreeWithoutEternalizing{#define lSon(p) p  r || segTree[p].rgt < l)      return; // exit because of not inside of the segment    if (segTree[p].lft >= l && segTree[p].rgt  r || segTree[p].rgt < l)      return 0; // exit because of not inside of the segment    if (segTree[p].lft >= l && segTree[p].rgt  q >> m;        vector arr(n);    for (int i = 0; i < n; ++i) {        cin >> arr;    }    SegmentTree segTree(n, m);    // Initialize the segment tree    for (int i = 0; i < n; ++i) {        segTree.updateRange(i, i, 1, arr);    }    while (q--) {        int type;        cin >> type;        int x, y;        long long k;        if (type == 1) {            cin >> x >> y >> k;            segTree.updateRange(x - 1, y - 1, k, 0);        } else if (type == 2) {            cin >> x >> y >> k;            segTree.updateRange(x - 1, y - 1, 1, k);        } else if (type == 3) {            cin >> x >> y;            cout
您需要登录后才可以回帖 登录 | 立即注册