社区讨论
非差分做法9pts求条
P1438无聊的数列参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjo6g1t
- 此快照首次捕获于
- 2025/11/04 05:46 4 个月前
- 此快照最后确认于
- 2025/11/04 05:46 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXLEN = 1e5 + 5;
int n, m, a[MAXLEN];
struct node {
int w, tagk, tagd;
} t[MAXLEN << 2];
void pushup(int x) {
t[x].w = t[x << 1].w + t[x << 1 | 1].w;
return ;
}
void build(int l, int r, int x) {
if (l == r) {
t[x].w = a[l];
return ;
}
int mid = (l + r) >> 1;
build(l, mid, x << 1);
build(mid + 1, r, x << 1 | 1);
pushup(x);
return ;
}
void addtag(int x, int k, int d, int len) {
t[x].w += len * k + (((len - 1) * len) >> 1) * d;
t[x].tagk += k;
t[x].tagd += d;
return ;
}
void pushdown(int x, int l, int r) {
if (t[x].tagd != 0 || t[x].tagk != 0) {
int mid = (l + r) >> 1;
addtag(x << 1, t[x].tagk, t[x].tagd, mid - l + 1);
addtag(x << 1 | 1, (t[x].tagk + (mid - l + 1)*t[x].tagd), t[x].tagd, r - mid);
t[x].tagd = t[x].tagk = 0;
}
return ;
}
void change(int cl, int cr, int l, int r, int k, int d, int x) {
pushdown(x, l, r);
if (cl <= l && r <= cr) {
addtag(x, k + max(0ll, l - cl)*d, d, r - l + 1);
return ;
}
int mid = (l + r) >> 1;
if (cl <= mid) {
change(cl, cr, l, mid, k + max(0ll, l - cl)*d, d, x << 1);
}
if (cr > mid) {
change(cl, cr, mid + 1, r, k + (max(0ll, mid - cl + 1)*d), d, x << 1 | 1);
}
pushup(x);
}
int query(int q, int l, int r, int x) {
pushdown(x, l, r);
if (l == r && r == q) {
return t[x].w;
}
int mid = (l + r) >> 1;
if (q <= mid) {
return query(q, l, mid, x << 1);
}
if (q > mid) {
return query(q, mid + 1, r, x << 1 | 1);
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i];
build(1, n, 1);
while (m--) {
int opt, l, r, k, d;
cin >> opt >> l;
if (opt == 1) {
cin >> r >> k >> d;
if (l > r)
swap(l, r);
change(l, r, 1, n, k, d, 1);
for (int i = 1; i <= n; i++) {
cout << query(i, 1, n, 1) << ' ';
}
cout << '\n';
} else {
cout << query(l, 1, n, 1) << '\n';
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...