2018年6月1日

SPOJ QTREE - Query on a tree

畢業快樂!


樹樹樹樹樹

題目:

給定N-1條邊,為一棵N個節點的樹,並進行若干操作,如下:
  • CHANGE i ti: 改變第i條邊的權重為ti
  • QUERY a b: 詢問從a走到b的過程中,權重最大的那條邊之權重。

做法:

對樹做樹鏈剖分(輕重鏈剖分),並將鏈上的點依序編號,一條鏈找到底再找另一條。

於是同一條鏈上的點編號是連續的,可以壓到線段樹上作區間最大值的查詢。
且由於每一個節點(除了ROOT)皆只有一個父節點,故每個節點存放自己到父節點間的邊權。

每次QUERY a b,找a, b的LCA,一邊爬一邊更新最大值。


code:


沒有留言:

張貼留言