魏晓东 发表于 2025-1-26 07:43:12

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

下面是我的线段树模板,第一篇为纯加法,第二篇为加乘结合。
#include #define MAXN 100010using namespace std;namespace segmentTreeWithoutEternalizing{#define lSon(p) pr || segTree.rgt < l)      return; // exit because of not inside of the segment    if (segTree.lft >= l && segTree.rgtr || segTree.rgt < l)      return 0; // exit because of not inside of the segment    if (segTree.lft >= l && segTree.rgtq >> 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
页: [1]
查看完整版本: 【信息学奥赛|数据结构模板】线段树