初涉樹分塊

2022-05-20 03:52:47 字數 1074 閱讀 1151

樹分塊:樹上莫隊基礎

丟乙個部落格:

「餘」人國的國王想重新編制他的國家。他想把他的國家劃分成若干個省,每個省都由他們王室聯邦的乙個成

員來管理。他的國家有n個城市,編號為1..n。一些城市之間有道路相連,任意兩個不同的城市之間有且僅有一條

直接或間接的道路。為了防止管理太過分散,每個省至少要有b個城市,為了能有效的管理,每個省最多只有3b個

城市。每個省必須有乙個省會,這個省會可以位於省內,也可以在該省外。但是該省的任意乙個城市到達省會所經

過的道路上的城市(除了最後乙個城市,即該省省會)都必須屬於該省。乙個城市可以作為多個省的省會。聰明的

你快幫幫這個國王吧!

第一行包含兩個數n,b(1<=n<=1000, 1 <= b <= n)。接下來n-1行,每行描述一條邊,包含兩個數,即這

條邊連線的兩個城市的編號。

如果無法滿足國王的要求,輸出0。否則輸出數k,表示你給出的劃分方案中省的個數,編號為1..k。第二行輸

出n個數,第i個數表示編號為i的城市屬於的省的編號,第三行輸出k個數,表示這k個省的省會的城市編號,如果

有多種方案,你可以輸出任意一種。

先把**扔這

1 #include2

const

int maxn = 1003;3

4int

stk[maxn],top;

5int

rt[maxn],ans[maxn],tot;

6int

n,b;

7 std::vectorf[maxn];89

void dfs(int x, int

fa)1020}

21 stk[++top] =x;22}

23int

main()

2432 dfs(1, 0

);33

while (top) ans[stk[top--]] =tot;

34if (!tot) puts("0"

);35

else

42return0;

43 }

初涉數論分塊

數論分塊 應該算是一類思想 我對數論分塊的理解就是 在一類要統計 sum 的數學題中,由於 f i 是單調的,故存在 x,y in i,j 使得 f x f y 於是只要找到這段區間就可以節省計算區間內每乙個函式值的時間開銷。時間複雜度大抵是 o sqrt n 的?只有一行乙個整數 n 0 n 10...

初涉平衡樹 替罪羊樹

替罪羊樹 乙個看上去很玄學的名字 替罪羊 這個名字非常有趣 以至於一開始我並不覺得這是什麼好懂的東西 名字的 大概是由於它在刪除時候需要用被刪除節點的 左子樹最後乙個節點 右子樹第乙個節點來頂替這個節點。資料結構圈居然還有這麼腦洞的名字 好像還有乙個東西叫做朝鮮樹來著?替罪羊的精華在於,它相較於其他...

初涉彙編《三》

在彙編 二 中我的說的問題,在這就不做回答了,因為乙個暫存器的來儲存資料肯定不夠用,因此,這些暫存器就可以提供空間。好了,這個彙編學習畢竟是我對彙編的個人的學習問題。現在我來說說彙編中後面的幾個標誌暫存器。標誌暫存器總共有9個,分別是cf,pf,af,zf,sf,tf,if,df,of 詳細解答,看...