hdu5593 ZYB s Tree 樹上統計

2022-07-15 04:54:08 字數 1591 閱讀 4097

題意:給1棵n(≤500,000)個節點的樹,每條邊邊權為1,求距離每個點距離不超過k(k≤10)的點的個數的xor和。

思路:由於k很小,可以考慮把距離作為狀態的一部分,然後研究父子之間狀態的聯絡。令ans[i][j]表示與i的距離為j的點的個數,那麼ans[i][j]由兩部分構成,一部分**於子樹,一部分**於父親,那麼令f[i][j]表示從子樹來的答案,g[i][j]表示從父親來的答案,son(i)表示i的兒子,fa(i)表示i的父親,則有:

ans[i][j] = f[i][j] + g[i][j]

f[i][j] = ∑f[son(i)][j-1]

g[i][j] = ans[fa(i)][j-1] - f[i][j-2]

具體做法是:先自底向上求解f陣列,這裡可以利用佇列按拓撲序依次訪問每個點,然後自頂向下求g陣列,這時只要在上一步的佇列裡面逆著掃一遍就行了。由於沒有遞迴,速度還是非常快的,把上面的g和ans省掉後,以200ms的速度排到了rank1,小小激動了一下=.=

Trie樹(字典樹)HDU 1251

又稱單詞查詢樹,trie樹 是一種 樹形結構 是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的 字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比 雜湊樹高。根節點不包含字元,除根節點外每乙個節...

hdu 預處理 線段樹)

給n個數,m個詢問,問任意區間內與其它數互質的數有多少個 比如3個數1 2 4,詢問 1,3 那麼答案是1 千萬要記住,這樣的題目,如果你不轉變下,使勁往線段樹想 雖然轉變之後,也說要用到線段樹,但是維護的東西不同了 那麼會發現這樣的題目,區間與區間之間是無法傳遞資訊的,區間與區間是無法傳遞資訊的,...

hdu4630 hdu4638 線段樹離線操作

兩題都是樸素想法列舉兩個端點o n 2 超時,那麼列舉其中乙個端點用線段樹維護另乙個端點。關鍵在於沒插入乙個端點後都是成段更新,否則又會退化到o n 2 ps 兩題用c 交都比g 快500ms以上。include include include include include includeusin...