HNOI2015 落憶楓音

2022-05-07 10:03:09 字數 611 閱讀 2419

[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 落憶楓音

恆逸,你相信靈魂的存在嗎?郭恆逸和姚楓茜漫步在楓音鄉的街道上。望著漫天飛舞的紅楓,楓茜突然問出這樣乙個問題。相信吧。不然我們是什麼,一團肉嗎?要不是有靈魂.我們也不可能再見到你姐姐吧。恆逸給出了乙個略微無厘頭的回答。楓茜聽後笑了笑。那你仔細觀察過楓葉嗎?說罷,楓茜伸手,接住了一片飄落的楓葉。其實每一...