已过,但小生有一不解之处,玄关
查看原帖
已过,但小生有一不解之处,玄关
945477
NOT__DeFined楼主2025/8/31 21:55

我的倍增

bool work(int d,int a,int c)
{
	if(a==d)	return 1;
	for(int j=20;j>=0;j--)
	{
		if(dep[fa[a][j]]>dep[c]&&dep[fa[a][j]]>dep[d])	a=fa[a][j];
	}
	return fa[a][0]==d;
}

其中c表示当前a点与另一个点的lca,d表示另外一对点的lca,这样写是70分

bool work(int d,int a,int c)
{
	if(a==d)	return 1;
	for(int j=20;j>=0;j--)
	{
		if(dep[fa[a][j]]>=dep[c]&&dep[fa[a][j]]>=dep[d])	a=fa[a][j];
	}
	return a==d;
}

但这样就过了

2025/8/31 21:55
加载中...