70分求调

P3372 【模板】线段树 1

看看你第三行的代码
by _zuoqingyuan @ 2023-12-14 21:14:33


@[Twinkling](/user/932978) 我的查询和修改和你不一样,可能是写法的原因,你看看我的吧: ```cpp #include <bits/stdc++.h> #define int long long using namespace std; const int maxn = 5e5 + 10; struct Tree { int l, r; int sum, lazy; }tree[maxn << 2]; int n, m, a[maxn]; void push_up(int i) { tree[i].sum = tree[i << 1].sum + tree[i << 1 | 1].sum; } void push_down(int i) { if(tree[i].lazy) { int k = tree[i].lazy; tree[i].lazy = 0; tree[i << 1].sum += (tree[i << 1].r - tree[i << 1].l + 1) * k; tree[i << 1 | 1].sum += (tree[i << 1 | 1].r - tree[i << 1 | 1].l + 1) * k; tree[i << 1].lazy += k, tree[i << 1 | 1].lazy += k; } } void build(int i, int L, int R) { tree[i].l = L, tree[i].r = R; if(L == R) { tree[i].sum = a[L]; return; } int mid = L + R >> 1; build(i << 1, L, mid), build(i << 1 | 1, mid + 1, R); push_up(i); } void modify(int i, int L, int R, int k) { if(L <= tree[i].l && tree[i].r <= R) { tree[i].sum += (tree[i].r - tree[i].l + 1) * k; tree[i].lazy += k; return; } push_down(i); if(tree[i << 1].r >= L) modify(i << 1, L, R, k); if(tree[i << 1 | 1].l <= R) modify(i << 1 | 1, L, R, k); push_up(i); } int query(int i, int L, int R) { if(L <= tree[i].l && tree[i].r <= R) return tree[i].sum; push_down(i); int ret = 0; if(tree[i << 1].r >= L) ret += query(i << 1, L, R); if(tree[i << 1 | 1].l <= R) ret += query(i << 1 | 1, L, R); return ret; } signed main() { cin >> n >> m; for(int i = 1; i <= n; i++) cin >> a[i]; build(1, 1, n); while(m--) { int opt; cin >> opt; if(opt == 1) { int x, y, k; cin >> x >> y >> k; modify(1, x, y, k); } else { int x, y; cin >> x >> y; cout << query(1, x, y) << '\n'; } } return 0; } ```
by _zhx @ 2023-12-14 21:15:39


@[zuoqingyuan](/user/731650) 然后呢,为什么有个蒟蒻不知道。
by _zhx @ 2023-12-14 21:20:20


```cpp #define ing long long ``` 是不是要写成 ```cpp #define int long long ```
by _zuoqingyuan @ 2023-12-14 21:21:22


@[_zhx](/user/784712) 我的意思是他的代码没问题,单纯有一个语句打错了
by _zuoqingyuan @ 2023-12-14 21:26:59


@[zuoqingyuan](/user/731650) @[_zhx](/user/784712) 谢谢!!!!!我查了两个晚上都没查出来,确实疏忽了,感谢帮忙 祝您AK IOI
by Twinkling @ 2023-12-14 21:35:42


[此贴结,警示:int不是ing](https://www.luogu.com.cn/record/139611516)
by Twinkling @ 2023-12-14 21:37:06


|