AS TITLE
題幹非常簡單
Given a bidirectional tree and k
這題要算的就是 sum over ceil(length between any pair of vertice / k)
作法:
DP,每條 path 的貢獻在他的 LCA 算好
我們可以把一條 path 拆成可以被 k 整除的部分跟餘數
像這樣,假設 k = 5
-----, -----, -----, -----, -----, -----, --
接著維護餘數為 t 的 path 有幾條,例子中 t = 2
以及 sum : 已經成為完整的長度為 k 的部分有幾個,例子中是 sum = 6
接著就像算 sum over length of all pair of path
實作細節:
k 不會很大,所以我寫 k^2 n 複雜度也沒慢多少,而且比較好寫
這題我用 struct 把操作包起來,寫起來非常舒服
寫了一個 shift method 實際上是 +1 的意思
Solution:
https://codeforces.com/contest/771/submission/52069290
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.216.110
※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1554016795.A.61A.html