当前位置: 首页 > news >正文

线段树模版

C++线段树模版代码

洛谷P3372 【模板】线段树 1

#include<bits/stdc++.h>
#define int long long
#define ls 2*root
#define rs 2*root+1
using namespace std;const int MAXN = 1e5+10;int he[5 * MAXN], biao[5 * MAXN], a[5 * MAXN];void pushup(int root){he[root] = he[rs]+he[ls];
}void build(int root, int l, int r){biao[root]=0;if(l == r) {he[root]=a[l];return ;} int mid = (l + r) / 2; build(ls, l, mid); build(rs, mid+1, r); pushup(root);
}void pushdown(int root,int l,int r){int mid=(l+r)/2;biao[ls]+=biao[root];he[ls]+=biao[root]*(mid-l+1);biao[rs]+=biao[root];he[rs]+=biao[root]*(r-mid);biao[root]=0;
}void update(int root, int l, int r,int ql,int qr,int k){if(ql<=l&&r<=qr){he[root]+=k*(r-l+1);biao[root]+=k;return ;}pushdown(root,l,r);int mid=(l+r)/2;if(ql<=mid)update(ls,l,mid,ql,qr,k);if(qr>mid) update(rs,mid+1,r,ql,qr,k);pushup(root);
}int query(int root, int l, int r, int qx, int qy){int ans = 0;if (qx <= l && r <= qy) return he[root];int mid=(l+r)/2;pushdown(root,l,r);if (qx <= mid) ans += query(ls, l, mid, qx, qy);if (qy > mid) ans += query(rs, mid+1, r, qx, qy);return ans;
}signed main(){int n,m;cin >> n >> m;for(int i = 1;i<=n;i++){cin >>a[i]; }build(1,1,n);while(m--){char op;int a, b,k;cin >> op >> a >> b;if(a>b)swap(a,b);if(op == '1'){cin >> k;update(1, 1, n, a, b, k);}else if(op == '2'){cout << query(1, 1, n, a, b)<<'\n';}}return 0; 
} 
http://www.hskmm.com/?act=detail&tid=1584

相关文章:

  • 设计模式-责任链模式
  • Linux开机启动设置全攻略
  • 实用指南:Grafana - 监控磁盘使用率Variables使用
  • iphone可以用windows系统吗
  • iphone怎么变windows系统
  • P4694 [PA 2013] Raper
  • 共享内存使用举例
  • 【QML】解决 Qt C++ 正则表达式中文匹配问题
  • 产品包装盒这样制作,再也不用到处求人啦!超简单的上手方法分享!
  • FunctionAI 图像生成:简化从灵感到 API 调用的每一步
  • ​​电力系统的“慧眼”:深入解析电流互感器的核心用途​​
  • C# 内存泄漏
  • 2025.9记录
  • AQS
  • TVBox中的Python接口解读
  • 一、CPU的功能和基本结构
  • DevOps时代的知识管理革命:如何构建智能化的研发决策中枢
  • P1099 [NOIP 2007 提高组] 树网的核
  • [GenAI] 外接DeepSeek
  • 一个简单美观的文件时间修改器
  • 暗黑类游戏属性系统程序设计思路3.0
  • 完整教程:毕设课题:基于Node.js+Express框架+Mysql数据库的助农农产品销售商城设计与实现
  • 经典的混合加密传输协议—PGP
  • 2025年互联网行业专业工艺认证发展指南
  • 基本数据类型转换
  • C# Avalonia 13- MoreDrawing - VisualLayer
  • Linux 设置nginx 以及java jar自启动
  • DevelPy-TryHackMe
  • 记录一次解决phpstudy启动数据库自动关闭的问题方法
  • cache redis