模擬78 題解


A. 串串香

送分題。

發現用$kmp$復雜度也是$O(n)$,和直接哈希的復雜度是一樣的。

所以直接雙模哈希硬干就完了。

 

 

 

B. 糊塗圖

在不加邊的情況下,因為存在拓撲序,問題是簡單的。

所以可以先處理出不加邊情況下,每個點達哥獲勝的概率,其實這個數組也表示走奇數步后無路可走的概率,設為$f_i$。

顯然有$f_i=\frac{\sum (1-f[to])}{out_i}$,可以在拓撲序的倒序上簡單遞推。

考慮當前加邊$(i,j)$。

那么可以將達哥獲勝的概率拆分為:

1.經過點$i$並且走向$j$獲勝的概率,

2.經過點$i$並且不走向$j$獲勝的概率,

3.不經過點$i$獲勝的概率。

那么當前已經關注從起點走到$i$的概率。

注意這里關注的其實是從起點到$i$走偶數步和奇數步分別的概率,因為達哥和B哥無名氏對應着不同的結果。

設上述兩個數組分別為$p0_i$和$p1_i$,均可以在拓撲序的正序上簡單遞推。

處理出這三個數組,已經可以暴力推答案。

仍然考慮當前加邊$(i,j)$

設$h$為達哥的第三部分勝率,有$h=f_s-f_i*p0_i-(1-f_i)*p1_i$

設$F$表示走到$i$之后奇數步后無路可走的概率,有$F=\frac{out_i}{out_i+1}*f_i+\frac{1}{out_i+1}*(1-f_j)$

那么$ans=p0_i*F+p1_i*(1-F)+h$

推一推式子,可以把其中關於$j$的項移出來。

於是枚舉$i$就可以統計出平均數和最大值。

 

 

 

C. 木葉下

手玩可以發現一些性質:

當不存在環,答案為樹的直徑除二向下取整再加一。

當存在環,答案為環上伸出的最長鏈。

首先預處理出需要的最長鏈,

然后分類討論:

在$1$為根的樹上$u$,$v$是祖先關系。那么$u$ $v$需要特判,中間只訪問除父鏈和子鏈。

在$1$為根的樹上$u$,$v$的$dfs$序無交集。那么$u$ $v$ $lca$需要特判,中間只訪問除父鏈和子鏈。

所以用一個倍增數組維護鏈上的最值,端點特判就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM