社区讨论

求调

P1198[JSOI2008] 最大数参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@m5j71h6b
此快照首次捕获于
2025/01/05 13:50
去年
此快照最后确认于
2025/11/04 11:57
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;

int a[200005], st[200005][25], _log2[200005];

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int m, d, cnt = 0, last = 0;
	cin >> m >> d;
	int lg = 0, jsq = 0;
	for (int i = 1; i <= 200005; i++)
	{
		_log2[i] = lg;
		jsq++;
		if (jsq == (1 << lg))
		{
			jsq = 0;
			lg++;
		}
	}
	for (int k = 1; k <= m; k++)
	{
		char opt;
		cin >> opt;
		if (opt == 'A')
		{
			int x;
			cin >> x;
			a[++cnt] = (x + last) % d;
			for (int j = 1; (1 << j) <= cnt; j++)
			{
				int l = cnt - (1 << j) + 1;
				st[l][j] = max(st[l][j - 1], st[l + (1 << j - 1)][j - 1]);
			}
			st[cnt][0] = a[cnt];
		}
		if (opt == 'Q')
		{
			int len;
			cin >> len;
			int l = cnt - len + 1;
			int x = _log2[cnt - l];
			int ans = max(st[l][x], st[cnt - (1 << x) + 1][x]);
			cout << ans << "\n";
			last = ans;
		}
	}
	return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...