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

[复制链接]
发表于 2025-1-26 07:43:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
下面是我的线段树模板,第一篇为纯加法,第二篇为加乘结合。
[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
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-9 04:54 , Processed in 0.075847 second(s), 27 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表