傳送門
Sunshine學長去年的互測題orz 然而他給的solution除了點分和bit什么都沒說啊。。。 硬著頭皮想吧,反正我知道要用bit了。。
如果是樹的話點分治+二分或者bit就能搞定 如果是環套樹的話怎么辦捏 首先考慮不經過環的答案,直接在外向樹上點分就行了 然后考慮經過環的答案 假設當前外向樹上深度為h的有x個點,那么上一棵外向樹的貢獻就是x*深度>=k-1-h的點的個數 假設上一個外向樹深度為1,2,..的點的個數都加入到bit里,那么就直接在bit里查詢就可以了 從這里可以想到用bit來維護然后查詢,也就是將當前外向樹之前的點都加進去,暴力枚舉當前外向樹的深度,然后查詢 當然兩棵外向樹的距離是不一樣的,所以在加入的過程中還需要根據距離進行相應的差分,實際上就是后一個加入的深度相比實際深度要比前一個小 還有就是因為是一個環,需要展環成鏈然后做n次 細節比較多。。。 時間復雜度
有一個讓我掛挺了的地方,,就是點分治必須每一次更新size,否則找到的重心是不準確的
新聞熱點
疑難解答