专栏文章
题解:P13976 数列分块入门 1
P13976题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miny8jqq
- 此快照首次捕获于
- 2025/12/02 10:18 3 个月前
- 此快照最后确认于
- 2025/12/02 10:18 3 个月前
跑的飞块。5e5 250ms。
CPP#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[1 << 19], B[1 << 10], n, q;
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++)
cin >> a[i], B[i >> 10] += a[i];
while (q--) {
int op, l, r, L, R, res = 0;
cin >> op >> l >> r;
if (op == 1)
a[l] += r, B[l >> 10] += r;
else {
L = l >> 10, R = r >> 10;
if (L ^ R) {
for (int i = l; i < (L + 1) << 10; i++)
res += a[i];
for (int i = L + 1; i < R; i++)
res += B[i];
for (int i = R << 10; i <= r; i++)
res += a[i];
} else
for (int i = l; i <= r; i++)
res += a[i];
cout << res << '\n';
}
}
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...