警钟长鸣(如果你树剖TLE on 8,9,10)
查看原帖
警钟长鸣(如果你树剖TLE on 8,9,10)
752764
GoodLeeLSR楼主2025/7/28 19:40

这个题目在往上跳重链时如果ans不为-1时就直接返回,不要跑到最后,不然会TLE

错误示范

int road_query(int u)
{
	int ans = -1;
	while(top[u] != 1)
	{
		ans = max(ans,query(dfn[top[u]],dfn[u],1,n,1));
		u = f[top[u]];
	}
	return max(ans,query(1,dfn[u],1,n,1));
}

AC代码

int road_query(int u)
{
	int ans = -1;
	while(top[u]!=1)
	{
		ans = max(ans,query(dfn[top[u]],dfn[u],1,n,1));
		u = f[top[u]];
        if(ans != -1) return ans;
	}
	return max(ans,query(1,dfn[u],1,n,1));
}
2025/7/28 19:40
加载中...