求助,TLE#61
查看原帖
求助,TLE#61
939931
Addicted_Game楼主2025/1/6 15:26
#include<bits/stdc++.h>
using namespace std;
int n,m;
int l,r,x;
int ne[300005];
int win[300005];

int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		ne[i]=i+1;
	}
	while(m--){
		scanf("%d%d%d",&l,&r,&x); 
		ne[l-1]=x;
		for(int i=l;i<=r;){
			if(win[i]){
				i=ne[i];
				continue;
			}
			if(i!=x) win[i]=x;
			int t=i;
			i=ne[i];
			if(t<x) ne[t]=x; 
			else if(t>=x) ne[t]=r+1;
		}
	}
	for(int i=1;i<=n;i++){
		printf("%d ",win[i]);
	}
	return 0;
}

主体思路是直接跳过淘汰的骑士遍历赋值即可

时间复杂度应该是 O(n)O(n)

但是不清楚为什么 TLE 了

2025/1/6 15:26
加载中...