既然是 \(A\) 題,那麼想簡單點好,直接猜取值只多是左端點或者右端點,\(\rm{DP}\) 就行?ide
證實考慮合併子樹的時候確定是數軸上的點和當前點的距離和,不太顯然取端點比中間的點不劣優化
B. Kavi on Pairing Duty設 \(\rm{dp[i]}\) 表示前 \(i\) 對圓弧的方案,那麼轉移分兩種ui
全部圓弧長度相同:\(d_i\)it
外側放若干個長度相同的大圓弧,中間放小的:\(\sum_{j<i} dp_j\)class
直接前綴和優化作到 \(\Theta(n)\)rsa
我的認爲有組合的方法,可是預處理 \(\binom xy\) 就須要 \(\Theta(N)\) 就不必了方法
C.Trees of Tranquillity確實是手速題im
多看一會就能發如今 \(A\) 樹上選擇的點是一條鏈,那麼直接 \(\rm{DFS}\) 同時回溯的時候撤銷貢獻就行統計
那麼貪心加點,在 \(B\) 樹上若是子樹裏面有點就不加,若是根鏈上面有選中的點就把那個點撤銷di
寫一個重鏈剖分+線段樹就行了
D. It's a bird! No, it's a plane! No, it's AaParsa!若是隻能走不能停就衝 \(\rm{Floyd}\) 等等就行,而對於等待是等效於花費 \(1\) 的代價從 \(x\) 走到 \(x+1\),那麼建一把虛邊
直接使用不優化的 \(\rm{Dijsktra}\),先把當前的源點處理掉
對於每輪掃出來的點,更新連出去的有向邊的同時用虛邊鬆弛便可
E.Mashtali and Hagh Trees如何看待我對着這東西只想到了外向樹?
條件三表示要求的是:外向樹,內向樹,內向樹+根之間的邊+外向樹
下面又是 \(\rm{DP}\) 之美:先求度數小於等於 \(2\) 的部分的 \(f[i]\),且只求內向樹
枚舉根的前驅的狀況獲得一個轉移:
第一項是表示根的兩個兒子的深度不一樣,最後一個是深度相同,這裏不能直接乘
中間是度數爲 \(1\),那麼最後純內向/外向樹的答案和上面的相似,度數爲三的而已
這裏不可貴到根的度數只能是 \(2\) 的 \(g_i=f_i-f_{i-1}\)
注意減掉純鏈的狀況,此時把外向樹翻轉就是內向樹
對於不是純外向/內向樹的圖形強行欽定外向樹的根的度數是 \(2\),使用 \(g_i\) 進行統計,也就是 \(\sum\limits_{i=0}^{n-1}f_ig_{n-i-1}\)
F. AmShZ Farm處理這種問題的 常見 思路是把序列新加入一個點,變成一個長度爲 \(n+1\) 的環,也就是所謂的 序列轉等機率環模型
對於每一個新加入的 \(i\) 從 \(a_i\) 開始走,走到沒有被佔據的地方停,若是說最後剩下 \(n+1\) 號點沒有被佔據則說明序列是合法的
關注到圖形變成環了,那麼 每一個點空出來的機率都是同樣的,爲 \(\frac{1}{n+1}\),這個等機率對於任意一個序列都能知足
考慮這樣一個性質:將一個合法的序列每一個元素 \(+1,+2,\dots +n\) 能獲得一個不合法的序列,可是顏色的相對順序不變
那麼直接獲得全部序列的總答案再除以 \(n+1\) 便可獲得合法序列的答案
直接堆一波式子:
有沒有很是熟悉?這不就是統一省選 \(\rm{2020}\ Day1T2\) 嗎?
直接使用第二類斯特林數展開 \(i^k\) 而後用二項式把後面的組合數縮進去,再平移一把,把價值爲 \(0\) 的數捨去就好了
最後使用 \(\rm{NTT}\) 完成一行斯特林數的計算便可