“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛 G:血压游戏(虚树+单调栈建树)
因为是同步进行的,所以第i层的不会影响到i+1层,所以我们可以把他们分层处理,对于当前层数,一直往上走,但是分层后他们可能会在某个点汇聚,就是它们的lca,所以我们得把他们所有的lca给求出来,然后建另外一棵树(虚树),对这个树dfs一遍求一下答案,求他们的lca,只要依次从左到右,两两的lca就是了,顺序可通过dfs序从小到大排序,然后对于n个点他们的lca最多 只有n-1个,因为假设求a b c3个点两两的lca, A = lca(a,b),那么a、b与c的lca其实就可以通过A和c的lca来得到。所以
原创
2020-06-13 16:22:21 ·
234 阅读 ·
0 评论