2.24 炫酷支配點對

LarsWerner發表於2024-03-26

我發現我有了“我不想讓人看到我所學的東西”的想法。但是我覺得如果藏藏匿匿的對我保持一個平常的,只專注於現在與自己的心態沒有任何幫助,反而會增長我的焦慮。

其實我也不知道這個 trick 叫什麼名字。但是支配點對聽起來真的很酷,於是就稱為支配點對吧,

對於樹上編號區間的題目,可以考慮使用“支配點對解決問題”。

具體而言,就是對於每個 \(i\) 找到滿足某些限制的編號前驅/後繼 \(j\),那麼被詢問區間 \([l,r]\) 包含的這些支配點對就會對問詢產生完備的貢獻。

一個比較有用的額外技巧,就是考慮支配點對的有向/無向性。在像 Ynoi y-fast trie 中,只保留雙向的支配點對即可求出答案,並且容易直接維護。然後在一些樹上問題中,手動去增加一個單向的限制能夠有比較好的效果。

今天日誌中的兩道問題都與樹上距離有關。處理樹上距離有關問題的時候可以考慮以深度作為決定單向性的一個方向。

QOJ5148 Tree Distance

每次詢問編號區間內任意兩點最小距離。

考慮點分樹上求支配點對。具體而言,對於分治中心 \(r\),子樹內 \(x,y\) 的距離即 \(d_x+d_y\)\(d\) 為到分治中心的距離。

考慮如下設計的一個支配點對:對於 \(i\),找到分治子樹內 \(d_j<d_i\) 的前驅後繼。這 \(O(n\log n)\) 個支配點對一定是完備的。

因為假如存在更遠的非前驅後繼的 \(k\),那麼如果我們要選 \((i,k)\),那麼我們發現我們不如直接選擇 \((j,k)\),因為 \((j,k)\) 完全被 \((i,k)\) 包含。

LG7126 rdCcot

每次詢問區間內的點提取出來後,樹上距離 \(\le C\) 的連邊,形成的連通塊數。

仍然考慮求支配點對。我一開始以為直接求 \(\le C\) 的支配點對就行了,但是實際上很不行。一來沒啥好用的性質,而最大的問題就是它根本就是錯的。

這種情況下仍然考慮定向。並且我們還是按照深度定向。對於 \(i\) 找到與其距離 \(\le C\) 且深度小於其(深度相同則比較標號)的前驅後繼。

這樣的好處是不會成環。既然不會成環那麼就意味著不會遇到兩個連通塊本來應該有連邊但是卻沒被統計,並且這一系列支配點對是完備的。

於是答案也好統計了。我們只需要統計沒有合法出邊的(即在 \([l,r]\) 的出邊)的點的個數即可。這就是一個樸素數點問題了。

相關文章