LOJ 2270 SDOI 2017 天才黑客

2022-09-21 17:48:08 字數 1213 閱讀 4817

給出一張 \(n\) 個點,\(m\) 條邊的圖以及乙個大小為 \(k\) 的字典樹,每條邊有 \(x, y\) 的權值,一條路徑的權值就是上面所有邊的 \(x\) 之和 + 相鄰兩條邊在字典樹上的 lca 的深度之和。

求 \(1\) 到每個點的最短路。

對於 \(100\%\) 的資料,\(t \leq 10\),\(2 \leq n \leq 50000\),\(1 \leq m \leq 50000\),\(1 \leq k \leq 20000\),保證滿足 \(n > 5000\) 或 \(m > 5000\) 的資料不超過 \(2\) 組。

虛樹圖論優化連邊

直接根據 xzz 講的做法寫的,沒有看題解實現,然後一頓搞,於是搞了半天,最後發現有乙個在namespace的變數然後在全域性變數裡面還開了乙個,終於過了樣例。。

感覺還是挺妙的!調出來了還是比較開心的!

先將邊換成點,轉換成邊與邊的距離,對於乙個點 \(x\),我們將其所有入邊和出邊所代表的點連邊。

比較棘手的就是這個 lca 的深度之和,然後可以類似於 [ctsc2018] 暴力寫掛 將所有點放到 trie 樹上,然後列舉作為 lca 的這個點,然後連邊。

又因為有關鍵點限制,於是我們可以將所有關鍵點建立一顆虛樹,然後有如下解法:

對於 trie 樹上每個點,新建兩個點,入點和出點。

每個點的出點向父親的出點連邊權為 \(0\) 的邊,父親的入點向該點的入點連一條邊權為 \(0\) 的邊,表示在 trie 樹上向下向上走的情況。

每個點的入點向出點連邊權為 \(dep\) 的邊,代表列舉的 lca 的 \(dep\)

對於乙個入邊,直接將這個點連一條到 trie 樹上的節點的邊,對於出邊,直接連出去即可。

然後我們會發現有乙個問題:

乙個點可以走到根,然後原路返回,於是 \(dep = 0\) 可以隨便走了

於是我們還要欽定不能原路返回,防止貢獻有問題。

於是可以將第 \(3\) 點改成:

對於 \(x\) 的每個兒子 \(y\),其入點向其他兒子的出點連邊權為 \(dep\) 的邊權

然後要注意對於關鍵點的連邊要考慮連邊之後向上 / 向下走的情況。

**(可以檢視歷史記錄**調題的艱辛)

Loj2003 SDOI2017 新生舞會

這道題太明顯了,一眼看過去就知道是0 1分數規劃。先用二分列舉mid,假設mid就是c 我們要判斷的是 a 1 a2 a nb1 b2 b n c frac c b1 b2 bn a1 a2 an c 然後我們就可以把分母乘到c上面去,得到 a 1 a2 a n c b1 b2 b n a 1 a ...

題解 LOJ2004 SDOI2017 硬幣遊戲

考慮建出ac自動機。則問題相當於,我們每步會從節點 i 等概率地走向 text i,0 或 text i,1 給定了乙個起點和若干個終點,求從每個終點結束的概率。因為到達乙個終點後遊戲就結束了,我們不會繼續走,所以每個終點被經過的次數要麼是 0 要麼是 1 因此,從每個終點結束的概率,在數值上就等於...

LOJ2002 SDOI2017 序列計數

loj 洛谷 考慮補集轉換,用所有數減去只用合數的方案數,我們先考慮算所有數的 首先可以得到乙個普及組 rm dp f 表示當前填了前 i 個,總和 p 為 j 的方案數。記錄乙個 cnt i 表示 p 為 i 的數的個數。轉移就是 f sum f p cdot cnt k 然後我們拿矩陣大力優化這...