【FCS NOI2018】福建省冬摸魚筆記 day6【FJOI 2018】福建省選混分滾蛋記 day1

記錄一下day6發生的事情吧。優化

7:30spa

到達附中求索碑,被人膜,掉RP。io

7:50技巧

進考場,6樓的最後一排的最左邊的位置,世界上最角落的地方,沒有任何想法。im

發現電腦時間和別人不同,趕快調了一下。數據

8:00時間

等待發題。思考

8:03co

題發了,爲何要遲發呢。=)time

8:05-9:30

左思右想T1什麼鬼東西。中間看了看T2T3是啥。

9:30-10:30

對T3的水震驚之餘,把T3切掉了,順便在准考證背面寫了題解,準備給同窗看看,以便帶出去交流。

10:50-12:00

思考T2騙分,T2又是DNA序列,思考爲何FJ不建一個全國基因研究庫,就開在FCS裏面,專門研究不相交DNA序列反轉和兩個DNA的最近公共祖先的長度呢?

最終仍是輸出了-1。233333

12:00-13:00

和@qrc交流T3,和其餘人講T3怎麼作,期盼本身能ACT3。

13:00-18:30

機房划水,TR災厄坑有了很大的進展,見識了克蘇魯之眼的狂暴形態。(???)

看了成績,穩穩110,和nealchen並列FJ No.12,很是的舒服。


說說題解吧,也只會T3了

【T3】

題意:有n個城市,每一個城市都有p個出入口,第\(i\)個城市的第\(j\)個出口有\(U_{i,j}\)條路徑,入口有\(V_{i,j}\)條路徑,從一個城市的第\(j\)出口出去,也要在另外一個城市的第\(j\)入口進入才行。

那麼,請你求出通過不超過k條路徑的,從S旅行到T的方案數吧,雖然城市的圖是同樣的,可是有多組詢問哦。

數據範圍:\(1\leq n\leq 1000,1\leq p\leq 20,0\leq k\leq 10^{18}\)。

題解:觀察到圖的鄰接矩陣是乘積的形式:\(A_{i,j}=\sum_{k=1}^{p}U_{i,p}\cdot V_{j,p}=\sum_{k=1}^{p}U_{i,p}\cdot V^{T}_{p,j}=U\cdot V^T\),準確的說,是矩陣乘積的形式!

這給接下來的解題提供了提示。

那麼咱們要求出\(Sum=A^0+A^1+\cdots+A^k\),準確的說,要求出\(Sum_{S,T}\),這裏的\(Sum\)是一個矩陣哦。

若是直接計算,矩陣乘法都會TLE。

那麼咱們化簡:

\(Sum=I+U\cdot V^T+U\cdot V^T\cdot U\cdot V^T+\cdots+(U\times V^T)^k\)

\(Sum=I+U\cdot(I+V^T\cdot U+(V^T\cdot U)^2+\cdots+(V^T\cdot U)^{k-1})\cdot V^T\)

恐怖的式子,對吧。可是咱們完成了很重要的一步,注意到了嗎:\(V^T\cdot U\)是一個\(p\times p\)的矩陣,這說明了矩陣乘法變得更快了!

用以往的技巧,構造\(2p\times 2p\)的矩陣,能夠記錄前綴和。

把這個矩陣的1,2,4,8,16...次冪記錄下來,就能夠直接快速求得任意次冪了。注意加上稀疏矩陣優化。

最終,前乘\(U\),後乘\(V^T\),再加上單位矩陣,就獲得答案。

最後的小優化:由於求得是\(Sum_{S,T}\),只要一個元素,能夠更快求出來,不用求出整個\(Sum\)。

那麼這題就算作完了。

相關文章
相關標籤/搜索