建议增加标签
查看原帖
建议增加标签
1063855
xu_zhihao楼主2024/9/26 22:20

增加标签 ST表

ST 表做这题真的事半功倍啊。

附代码

#include<bits/stdc++.h>
using namespace std;
int len;
long long M,D;
long long t=0;
long long st[200010][25];
void Insert(long long q){
	int lg=log2(1+len);
	st[len][0]=q;
	for(int i=1;i<=lg;i++){
		st[len-(1<<i)+1][i]=max(st[len-(1<<i)+1][i-1],st[len-(1<<(i-1))+1][i-1]);
	}
	return;
}
long long find(int l,int r){
	int lg=log2(r-l+1);
	long long ans=max(st[l][lg],st[r-(1<<lg)+1][lg]);
	return ans;
}
int main(){
	scanf("%lld%lld",&M,&D);
	while(M--){
		char op;
		scanf(" %c",&op);
		if(op=='Q'){
			int L;
			scanf("%d",&L);
			t=find(len-L+1,len);
			printf("%lld\n",t);
		}
		else{
			long long n;
			scanf("%lld",&n);
			long long q=(n+t)%D;
			++len;
			Insert(q);
		}
	}
	return 0;
}

总行数 4040,长度 733733

@离散小波变换° @Maxmilite

2024/9/26 22:20
加载中...