@[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