想问一下大佬,为什么不能这样写?
查看原帖
想问一下大佬,为什么不能这样写?
644095
_Rye楼主2023/2/6 12:11
//https://www.luogu.com.cn/problem/P3374
#include<bits/stdc++.h>

using namespace std;
#define int long long
#define lowbit(x) (x&-x)
const int N = 5e5 + 50;
int c[N];
int n, q;
void add(int u, int v) {
	for (int i = u; i <= n; i += lowbit(i)) {
		c[i] += v;
	}
}
int query(int x) {
	int ans = 0;
	for (int i = x; i >= 1; i -= lowbit(i)) {
		ans += c[i];
	}
	return ans;
}
int a[N];
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(nullptr); cout.tie(nullptr);

	cin >> n >> q;
	for (int i = 1; i <= n; i++) {
		int x;
		cin >> x;
		add(i, x);
	}
	while (q--) {
		int op;
		cin >> op;
		if (op == 1) {
			int l, r, x;
			cin >> l >> r >> x;
			add(l, x);
			add(r + 1, -x);

		}
		else {
			int x;
			cin >> x;
			cout << query(x) - query(x - 1) << "\n";
		}
	}

}
2023/2/6 12:11
加载中...