[hnoi2015]落憶楓音
首先 原圖是乙個dag
生成樹即為除了根節點以外每個節點隨便選一條入邊組成的
所以生成樹數量 = 各個點入度乘積
新加入一條邊 分三種情況
1.如果不成環 那麼可以把它放在原來的dag裡計算
2.如果它的終點為1 那麼忽略不計
3.如果它成環的話 假設其中乙個環大小是size
那麼答案就是 每個點隨便選乙個入邊 - 這個環形成的情況
即 ind[1] * ind[2] * ind[3] * ... * ind[n] / (ind[a_(1)] * ind[a_(2)] * ... * ind[a_(size)])
所有的環加起來就是
隨便選乙個入邊 - 第乙個環形成 - 第二個環形成 - ...
由於無論哪個環都必須包括這條新加入的邊
所以並不會有衝突 不必容斥
ps 在膜p意義下 除以x等於乘x ^ (p - 2) <- x膜p的逆元
還有一種篩逆元的方法
void linear_shaker()
dp方程
dp[ i ] = σj, ( i 可以到達 j ) dp[ j ] × inv( ind[ i ] )
HNOI2015 落憶楓音
嘟嘟嘟 這題大意就是有乙個dag,然後新增了一條邊,求上有多少種生成樹。這題想了半天,最後還是寫了暴力。暴力就是 o 2 mn 的那種,還出鍋了幾次 剛開始我不想dfs判斷選出的邊是否構成樹,於是yy了一下,以為只要邊數為 n 1 除了根節點每個點的入度為1且都被訪問過就行了。卻忘了有環的情況 只要...
HNOI2015 落憶楓音
luogu3244 bzoj4011 如果是乙個dag,那麼答案顯然是 prod n deg i 其中 deg i 是點 i 的入度。加上條邊後可能會成環,我們要去掉成環的情況數。考慮乙個環,錯誤的計數只會發生在環上每個點選了自己環上的父親,環外的點隨意。所以對於每個環,多餘的計數是 prod de...
HNOI2015 落憶楓音
恆逸,你相信靈魂的存在嗎?郭恆逸和姚楓茜漫步在楓音鄉的街道上。望著漫天飛舞的紅楓,楓茜突然問出這樣乙個問題。相信吧。不然我們是什麼,一團肉嗎?要不是有靈魂.我們也不可能再見到你姐姐吧。恆逸給出了乙個略微無厘頭的回答。楓茜聽後笑了笑。那你仔細觀察過楓葉嗎?說罷,楓茜伸手,接住了一片飄落的楓葉。其實每一...