Bzoj 5195 [Usaco2018 Feb]Directory Traversal
阿新 • • 發佈:2018-10-29
file bubuko mage 葉子 com 字符串 最小 bzoj 需要 ,而除去7號點子樹以外的葉子點只需讓7號點先訪問到一號點之後就和1號點的訪問情況一樣了,所以7號點訪問這些點的總長度=1號點訪問的總長度+(總點數-7號點子樹內個數)\(\times 3\)。所以整合起來,7號點訪問所有葉子點的總長度=1號點訪問的總長度+總點數\(\times3-7\)號點子樹內個數\(\times (4+len_7)\)。
Descrtiption
奶牛Bessie令人驚訝地精通計算機。她在牛棚的電腦裏用一組文件夾儲存了她所有珍貴的文件,比如:
bessie/
folder1/
? file1
? folder2/
? file2
folder3/
? file3
file4
只有一個“頂層”的文件夾,叫做bessie。
Bessie可以瀏覽任何一個她想要訪問的文件夾。從一個給定的文件夾,每一個文件都可以通過一個“相對路徑”被引用。
在一個相對路徑中,符號“..”指的是上級目錄。如果Bessie在folder2中,她可以按下列路徑引用這四個文件:
../file1 file2 ../../folder3/file3 ../../file4
Bessie想要選擇一個文件夾,使得從該文件夾出發,對所有文件的相對路徑的長度之和最小。
\(N \leqslant 1e5\)
Solution
\(\,\,\,\,\,\,\,\,\,\,\,\)首先你得需要看懂題面(沒看懂再看一次,我可不會解釋)。典型的二次換根類題目。設\(len_i?\)為點i的名稱長度,設\(f_i?\)為i到所有葉子點的長度之和,先考慮如何算出根的f值,再考慮如何用一個點更新其兒子,以此類推。
\(\,\,\,\,\,\,\,\,\,\,\,\)根的值很好求,因為只需要往下走。再考慮如何更新兒子。
\(\,\,\,\,\,\,\,\,\,\,\,\) 用這個圖打個比方,假設每個點的字符串長度就等於自身編號。我們先預處理出1號點到所有葉子點的總長度,再考慮更新7號點。對於所有在7號點子樹內的葉子點,1號點必須先訪問到7號點再下走訪問各個點,所以7號點訪問這些點的總長度=1號點訪問的總長度-7號點子樹內個數\(\times (len_7+1)\)
Bzoj 5195 [Usaco2018 Feb]Directory Traversal