专栏文章

P1198 [JSOI2008] 最大数

个人记录参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@miokmubk
此快照首次捕获于
2025/12/02 20:45
3 个月前
此快照最后确认于
2025/12/02 20:45
3 个月前
查看原文
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long 
int m,d;
const int maxn=1e6+10;
const int maxx=25;
int a[maxn];
int f[maxn][maxx];
int lg[maxn];
int cmp=0;
	int ans=0;
int q(int l,int r){
	int j=lg[r-l+1];
	return max(f[l][j],f[r+1-(1<<j)][j]);
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>m>>d;
//	q();

	while(m--){
		char s;
		cin>>s;
		if(s=='A'){
			cmp++;
			int x;
			cin>>x;
			a[cmp]=(x+ans)%d;
			int j=0;
			while((1<<j)<=cmp){
				int i=cmp-(1<<j)+1;
				if(j==0)f[i][j]=a[cmp];
				else f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
				j++;	
			}
		}
		if(s=='Q'){
			int x;
			cin>>x;
			ans=q(cmp-x+1,cmp);
			cout<<ans<<'\n';
		}
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...