c++树状数组与线段树模板
2022/2/1 20:11:15
本文主要是介绍c++树状数组与线段树模板,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
输入输出样例
10 5 1 2 3 4 5 6 7 8 9 10 1 1 5 0 1 3 0 4 8 1 7 5 0 4 8
输出效果
11 30 35
#include<iostream> #include<algorithm> using namespace std; int n,m; int w[100006]; struct node{ int l,r; int sum; }aa[400006]; void pushup(int u){ aa[u].sum = aa[u*2].sum+aa[u*2+1].sum; } void build(int u,int l,int r){ if(l==r) aa[u]={l,r,w[l]}; else{ aa[u]={l,r}; int mid = (l+r)/2; build(u*2,l,mid); build(u*2+1,mid+1,r); pushup(u); } } int query(int u,int l,int r){ if(l<=aa[u].l && aa[u].r<=r) return aa[u].sum; int mid = (aa[u].l+aa[u].r)/2; int sum = 0; if(l<=mid) sum+=query(u*2,l,r); if(r>mid) sum+= query(u*2+1,l,r); return sum; } void modify(int u,int x,int v){ if(aa[u].l == aa[u].r) aa[u].sum += v; else{ int mid =(aa[u].l+aa[u].r)/2; if(x<=mid) modify(u*2,x,v); else modify(u*2+1,x,v); pushup(u); } } int main() { cin >> n >> m; int x,a,b; for(int i =11;i<=n;i++) cin >> w[i]; build(1,1,n); while(m--){ cin >> x >> a >> b; if(!x) cout << query(1,a,b) << endl; else modify(1,a,b); } return 0; }
#include<bits/stdc++.h> #define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) //#define debug freopen("input.txt","r",stdin),freopen("out.txt","w",stdout); #define PI acos(-1) #define fs first #define sc second using namespace std; typedef long long ll; typedef pair<int,int> pii; const int maxn = 1e6+10; using namespace std; int N,M; int arr[maxn]; int tr[maxn]; int lowbit(int x){ return x&-x; } void add(int idx,int v){ for(int i =idx;i<=N;i+=lowbit(i)) tr[i]+=v; } ll query(int r){ ll sum = 0; for(int i= r;i>=1;i-= lowbit(i)) sum+=tr[i]; return sum; } int main() { //debug ios; cin >> N >> M; for(int i =1;i<=N;i++) cin >> arr[i]; for(int i =1;i<=N;i++) add(i,arr[i]); while(M--){ int k,a,b; cin >> k >> a >> b; if(k==0){ cout << query(b) - query(a-1) << endl; }else{ add(a,b); } } return 0; }
这篇关于c++树状数组与线段树模板的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望
- 2024-05-29五款扩展组件齐发 —— Volcano、Keda、Crane-scheduler 等,邀你体验
- 2024-05-29AutoMQ 对象存储数据高效组织的秘密: Compaction
- 2024-05-29活动预告|来 GIAC 大会听大数据降本利器:AutoMQ 基于云原生重新设计的 Kafka