《怪物獵人物語2破滅之翼》青電主基因搭配建議
阿新 • • 發佈:2021-08-09
區間修改
我看見 你#define int long long const int maxn = 3e5 + 7; int a[maxn]; struct node { int l, r, sum, lz; } tr[maxn << 4]; void push_up(int p) { tr[p].sum = tr[p << 1].sum + tr[p << 1 | 1].sum; } void push_down(int p) { if (tr[p].lz != 0) { tr[p << 1].sum += (tr[p << 1].r - tr[p << 1].l + 1) * tr[p].lz; tr[p << 1 | 1].sum += (tr[p << 1 | 1].r - tr[p << 1 | 1].l + 1) * tr[p].lz; tr[p << 1].lz += tr[p].lz; tr[p << 1 | 1].lz += tr[p].lz; tr[p].lz = 0; } } void build(int p, int l, int r) { tr[p].l = l, tr[p].r = r; if (l == r) { tr[p].lz = 0; tr[p].sum = a[l]; return; } int mi = (l + r) >> 1; build(p << 1, l, mi); build(p << 1 | 1, mi + 1, r); push_up(p); } void update(int p, int l, int r, int val) { if (l <= tr[p].l && tr[p].r <= r) { tr[p].lz += val; tr[p].sum += (tr[p].r - tr[p].l + 1) * val; return; } push_down(p); int mi = (tr[p].l + tr[p].r) >> 1; if (l <= mi) update(p << 1, l, r, val); if (r > mi) update(p << 1 | 1, l, r, val); push_up(p); } int res; void query(int p, int l, int r) { if (l <= tr[p].l && tr[p].r <= r) { res += tr[p].sum; return; } push_down(p); int mi = (tr[p].l + tr[p].r) >> 1; if (l <= mi) query(p << 1, l, r); if (r > mi) query(p << 1 | 1, l, r); push_up(p); } int n, t, m; void solve() { scanf("%lld%lld", &n, &m); for (int i = 1; i <= n; i++) scanf("%lld", &a[i]); build(1, 1, n); for (int i = 1; i <= m; i++) { char op; int l, r, val; scanf(" %c", &op); if (op == 'Q') { scanf("%lld%lld", &l, &r); res = 0; query(1, l, r); printf("%lld", res); if (i != m) puts(""); } else { scanf("%lld%lld%lld", &l, &r, &val); update(1, l, r, val); } } }