样例对 ,全WA
查看原帖
样例对 ,全WA
1569314
lx2009楼主2024/11/28 18:31
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node
{
	int c[8]={0};
}dp[400001];
int n,m,x,y;
node upd(node x,node y){
	node k;
	int l=0,r=0;
	while(l+r<8 && l<8 && r<8)
	{
		if(x.c[l] > y.c[r])k.c[l+r] = x.c[l++];
		else k.c[l+r] = y.c[r++];
	}
	return k;
}
void update(int l,int r,int s,int cc,int p){
	if(l==r && l==s){
		dp[p].c[0]=cc;  return;
	}
	int mid=(l+r)/2;
	if(mid >= s)update(l,mid,s,cc,p << 1);
	else update(mid+1,r,s,cc,p << 1 | 1);
	dp[p]=upd(dp[p << 1],dp[p << 1 | 1]);
	return;
}
node query(int l,int r,int s,int t,int p){
	if(l>=s && r<=t){
		return dp[p];		
	}
	int mid=(l+r)/2; node rt1,rt2;
	if(mid>=s) rt1=query(l,mid,s,t,p << 1);
	if(mid<t) rt2=query(mid+1,r,s,t,p << 1 | 1);
	return upd(rt1,rt2);
}
signed main()
{	
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=m;i++){
		char r; cin>>r;
		if(r == 'C'){
			scanf("%lld%lld",&x,&y);
			update(1,n,x,y,1); 
		}
		else
		{
			scanf("%lld%lld",&x,&y);
			printf("%lld\n",query(1,n,x,y,1).c[7]); 
		}
	}
	return 0;
} 
2024/11/28 18:31
加载中...