全RE求助

P1198 [JSOI2008] 最大数

@[pfrig729](/user/730178) 谔谔其实嘛,这么写也行...... ```cpp #include <iostream> #define int long long using namespace std; int m, d, a[2000010], f[2000010], t, cnt; signed main() { cin >> m >> d; while (m--) { char op; cin >> op; if (op == 'Q') { int L; cin >> L; cout << f[cnt-L+1] << endl; t = f[cnt-L+1] % d; } else { int n; cin >> n; a[++cnt] = (1ll * (n + t)) % d; f[cnt] = a[cnt]; for (int i = cnt - 1; i >= 1; i--) { if (f[i] < a[cnt]) f[i] = a[cnt]; else break; } } } return 0; } ```
by wzj0829 @ 2024-01-24 20:17:51


@[wzj0829](/user/1028403) 呃,我只是在练线段树的题,不过谢谢
by pfrig729 @ 2024-01-24 20:21:31


按原神过多导致的 ```cpp #include<bits/stdc++.h> using namespace std; int m, p, n, last; struct _ { int l, r, v; }tr[800005]; void pushup(int u) { tr[u].v = max(tr[u << 1].v, tr[u << 1 | 1].v); } void build(int u, int l, int r) { tr[u].l = l, tr[u].r = r; if (l == r) return; int mid = (l + r) >> 1; build(u << 1, l, mid); build(u << 1 | 1, mid + 1, r); } int query(int u, int l, int r) { if (l <= tr[u].l && r >= tr[u].r) return tr[u].v; int mid = (tr[u].l + tr[u].r) >> 1, res = 0; if (l <= mid) res = query(u << 1, l, r); if (r > mid) res = max(res, query(u << 1 | 1, l, r)); return res; } void modify(int u, int x, int v) { if (tr[u].l == x && tr[u].r == x) tr[u].v = v; else { int mid = (tr[u].l + tr[u].r) >> 1; if (x <= mid) modify(u << 1, x, v); else modify(u << 1 | 1, x, v); pushup(u); } } int main() { n = last = 0; cin >> m >> p; build(1, 1, m); while (m--) { string c; int d; cin >> c >> d; if (c[0] == 'Q') { last = query(1, n - d + 1, n); cout << last << endl; } else { modify(1, ++n, (1ll * last + d) % p); } } return 0; } ```
by zyc_bot @ 2024-01-24 21:16:01


@[pfrig729](/user/730178)
by zyc_bot @ 2024-01-24 21:16:18


@[zyc_bot](/user/1076445) 你这什么不玩原神的马蜂
by pfrig729 @ 2024-01-24 21:19:02


@[zyc_bot](/user/1076445) 所以就是`query`函数里面的`if(r>=mid)`应该是`if (r > mid)`?为什么
by pfrig729 @ 2024-01-24 21:22:35


@[pfrig729](/user/730178) 看来你线段树没学懂啊 查询区间时,如果右端点大于或等于中点,那么我们需要查询右子树。而不是 if (r >= mid),这样可能会导致重复查询。(我也不知道,猜的
by zyc_bot @ 2024-01-24 21:27:13


@[zyc_bot](/user/1076445) [过了](https://www.luogu.com.cn/record/144212566),thx ~~(同学就不关了吧)~~
by pfrig729 @ 2024-01-24 21:32:52


@[pfrig729](/user/730178) 必须关。或者帮我买两个M(不是同学我都懒得条
by zyc_bot @ 2024-01-24 21:35:21


@[zyc_bot](/user/1076445) 行行行
by pfrig729 @ 2024-01-24 21:36:18


| 下一页