P3368 【模板】树状数组 2
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int Max = 500005;
int a[Max];
int n,m;
int lowbit(int x) {
return x & -x;
}
void add(int x,int y) {
while(x <= n) {
a[x] += y;
x += lowbit(x);
}
}
int sum(int x) {
int ans = 0;
while(x > 0) {
ans += a[x];
x -= lowbit(x);
}
return ans;
}
signed main() {
cin>>n>>m;
int last = 0;
for(register int i = 1; i <= n; ++ i) {
int qwq;
cin>>qwq;
add(i,qwq - last);
last = qwq;
}
for(int i = 1; i <= m; ++ i) {
int qwq;
cin>>qwq;
if(qwq == 1) {
int x ,y,z ;
cin>>x>>y>>z;
add(x,z);
add(y + 1,-z);
} else {
int x ;
cin>>x;
cout << sum(x) << endl;
}
}
return 0;
}
本文来自博客园,作者:Arthur_Douglas,转载请注明原文链接:https://www.cnblogs.com/wenzhihao2023/p/17986673
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步