- 一个简单的整数问题2
1
- @ 2026-7-23 11:14:37
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>
struct Fenwick {
int n;
vector<ll> t;
Fenwick(int n_) {
n = n_; t.assign(n + 1, 0);
}
void change(int u, ll x) {
for (; u <= n; u += u & -u) t[u] += x;
}
ll sum(int u) {
ll sum = 0;
for (; u; u -= u & -u) sum += t[u];
return sum;
}
ll sum(int l, int r) {
return sum(r) - sum(l - 1);
}
};
void solve() {
int n, m;
cin >> n >> m;
Fenwick t1(n + 1), t2(n + 1);
auto add1 = [&] (int r, ll v) {
if (r == 0) return;
t1.change(r, v);
t2.change(r, v * r);
};
auto add = [&] (int l, int r, ll v) {
add1(r, v);
add1(l - 1, -v);
};
for (int i = 1; i <= n; i++) {
int x; cin >> x;
add(i, i, x);
}
auto query = [&] (int u) {
return t2.sum(1, u) + t1.sum(u + 1, n) * u;
};
while (m--) {
char o; int x, y;
cin >> o >> x >> y;
if (o == 'Q') {
cout << query(y) - query(x - 1) << '\n';
} else {
int v;
cin >> v;
add(x, y, v);
}
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
// cout << powl(1 - 1 / 1e9, 3e7) << '\n';
int t = 1;
while (t--)
solve();
return 0;
}
/*
g++ -std=c++20 1.cpp -o 1 && 1 < in.txt > out.txt
*/
0 条评论
目前还没有评论...
信息
- ID
- 506
- 时间
- ms
- 内存
- MiB
- 难度
- 6
- 标签
- 递交数
- 59
- 已通过
- 20
- 上传者