UNE求助
查看原帖
UNE求助
699471
yuxiaoyu20090104楼主2023/8/2 12:08
#include<bits/stdc++.h>
using namespace std;
int n,m,id=1,sum[1200005],lt[1200005],rt[1200005],lay[1200005];
void Push_down(int l,int r,int u)
{
	if(lay[u]==-1)return;
	if(!lt[u])lt[u]=++id;
	if(!rt[u])rt[u]=++id;
	int mid=(l+r)>>1;
	lay[lt[u]]=lay[rt[u]]=lay[u];
	sum[lt[u]]=lay[lt[u]]*(mid-l+1),sum[rt[u]]=lay[rt[u]]*(r-mid);
	lay[u]=-1;
	return;
}
void Update(int L,int R,int l,int r,int u,int val)
{
	//cout<<L<<" "<<R<<" "<<l<<" "<<r<<endl;
	if(L<=l&&r<=R){lay[u]=val,sum[u]=val*(r-l+1);return;}
	Push_down(l,r,u);
	int mid=(l+r)>>1;
	if(L<=mid)Update(L,R,l,mid,lt[u],val);
	if(R>mid)Update(L,R,mid+1,r,rt[u],val);
	sum[u]=sum[lt[u]]+sum[rt[u]];
	return;
}
int main()
{
	scanf("%d%d",&n,&m);
	lay[1]=1,sum[1]=n,id=1;
	while(m--)
	{
		int l,r,x;
		scanf("%d%d%d",&l,&r,&x);
		if(x==2)x=1;
		else if(x==1)x=0;
		Update(l,r,1,n,1,x);
		printf("%d\n",sum[1]);
	}
	return 0;
}

动态开点线段树,交上去测评半天结果UNE,请问这是我代码问题还是洛谷RMJ的问题? 我在别的OJ上可以AC啊

2023/8/2 12:08
加载中...