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

打印 上一主题 下一主题

主题 964|帖子 964|积分 2892

下面是我的线段树模板,第一篇为纯加法,第二篇为加乘结合。
[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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表