萌新求助,用ST表写的,全 WA 了(悲)
查看原帖
萌新求助,用ST表写的,全 WA 了(悲)
30092
Meronri_Deng楼主2020/6/17 17:03
#include<bits/stdc++.h>
using namespace std;
template <typename qwq> void read(qwq &a)
{
	a=0;int x=1;char c=getchar();
	for  (;!isdigit(c);c=getchar()) if  (c=='-')	x=-x;
	for  (;isdigit(c);a=a*10+c-48,c=getchar()); a*=x;
}
int MOD;
long long st[200005][21];
int log_2[200005];
const int oo=214483647;
int _max(int x,int y)	{return x>y?x:y;}
int QU(int l,int r)
{
	int len=r-l;
	int qwq=log_2[len];
	return _max(st[l][qwq],st[r-(1<<qwq)+1][qwq]);
}
int main()
{
	int m;
	read(m),read(MOD);
	int n=0;
	for	(int i=2;i<=m;i++)
		log_2[i]=log_2[i/2]+1;
	for  (int i=0;(1<<i)<=m;i++)
		st[0][i]=-oo;
	long long t=0;
	for	(int i=1;i<=m;i++)
		{
			char xx[5];
			cin>>xx;
			if (xx[0]=='Q')
				{
					int l;
					read(l);
					t=QU(n-l+1,n);
					printf("%d\n",t);
				}
			else
				{
					long long x;
					read(x);
					n++;
					st[n][0]=(t+x)%MOD;
					for	(int j=1;(1<<j)<=n;j++)
						st[n][j]=_max(st[n][j-1],st[n-(1<<j-1)][j-1]);
				}
		}
    return 0;
}
2020/6/17 17:03
加载中...