DTOJ 4848 交通網路

2021-10-06 20:03:39 字數 2547 閱讀 9083

宮水三葉在玩一款遊戲。

這是一款對城市進行建設的遊戲,遊戲裡有 n

nn 個城市。三葉在任意兩個城市上都修了一條普通公路,公路為雙向邊。

三葉並不滿足於普通公路,於是三葉又把所有的連線 (i,

i+1)

(i,i+1)

(i,i+1

) 的普通公路改造成了高速公路。

然而一次經濟危機讓三葉接近破產。為了減小公路的維修費,三葉決定拆除大部分公路。但是三葉還需要保證圖聯通,於是三葉決定保留原圖的一棵生成樹。

通過觀察,三葉發現保留高速公路比保留普通公路更有價值,而且這些價值隨著高速公路的增多會略快於指數級增加。

形象化的描述,如果三葉保留了 x

xx 條高速公路,那麼新圖的價值為 x⋅2

xx \cdot 2^x

x⋅2x

。雖然最優解很好求,但是三葉喜歡思考。她想知道對於原圖的所有生成樹,它們的價值的總和是多少。

本題採用**測試。

對於所有資料,滿足 1≤n

≤5×1

05

1 \le n \le 5 \times 10^5

1≤n≤5×

105 。

每個測試點具體限制見下表。

測試點編號

n

nn分值

1 11≤

8\le 8

≤84 442

22≤

18\le 18

≤186663

33≤

80\le 80

≤8013

1313

4 44≤

500\le 500

≤500

14

1414

5 55≤

5000

\le 5000

≤500015

1515

6 66≤

5×10

4\le 5 \times 10^4

≤5×104

20

2020

7 77≤

5×10

5\le 5 \times 10^5

≤5×105

28

2828

由於i

ii到i+1

i+1i+

1的邊是特殊的,先考慮連了一些這種邊,則剩下一些聯通塊。於是這些聯通塊的生成樹個數問題就是經典的prufer計數 (並不會) :nm−

2∏i=

1msi

ze

in^\prod_^m size_i

nm−2∏i

=1m​

size

i​。由於不能保證剩下的關鍵邊不被選,需要容斥一下算出恰好選x

xx條邊的方案數,dp可以做到o(n

2)

o(n^)

o(n2)。

考慮生成函式:每新增乙個連通塊的轉移關係為乘上f(x

)=∑i

=1∞n

ix

if(x)=\sum_^nix^

f(x)=∑

i=1∞

​nix

i,至少(n−

i)

(n-i)

(n−i

)條關鍵邊的方案即為fi(

x)/n

2f^(x)/n^

fi(x)/

n2,如果要直接容斥則要求出每乙個fi(

x)

f^(x)

fi(x

)不太現實。考慮構造乙個式子使得恰好選x

xx條關鍵邊的方案的貢獻為x∗2

xx*2^

x∗2x

,注意到恰好選x

xx條關鍵邊在fn−

i(x)

f^(x)

fn−i(x

)中記到的次數為cx,

ic_

cx,i

​,如果求出∑(n

−i)f

i(x)

\sum_{}^{}(n-i)f^(x)

∑​(n−i

)fi(

x)則恰好滿足題意。對這個式子求和即可用多項式求逆算出。

再進一步考慮,把fi(

x)

f^(x)

fi(x

)化為特徵多項式,即可o(n

)o(n)

o(n)

算出第n

nn項的和。

這裡需要用到廣義二項式定理,即:(1−

x)−n

[xm]

=c((

n+m−

1),m

)(1-x)^[x^]=c((n+m-1),m)

(1−x)−

n[xm

]=c(

(n+m

−1),

m),考慮(1−

x)−1

(1-x)^

(1−x)−

1的多項式為,這個多項式的n

nn次方考慮組合意義即可。

交叉編譯QT4 8 4

linux ubuntu 11.10 x86 qt 4.8.4 交叉編譯工具鏈 gcc version 4.3.2 sourcery g lite 2008q3 72 tslib是電阻式觸控螢幕用於校準的乙個軟體庫,是乙個開源的程式,能夠為觸控螢幕驅動獲得的取樣提供諸如濾波 去抖 校準等功能,通常作...

交叉編譯QT4 8 4

linux ubuntu 11.10 x86 qt 4.8.4 交叉編譯工具鏈 gcc version 4.3.2 sourcery g lite 2008q3 72 tslib是電阻式觸控螢幕用於校準的乙個軟體庫,是乙個開源的程式,能夠為觸控螢幕驅動獲得的取樣提供諸如濾波 去抖 校準等功能,通常作...

qt 4 8 4 設定陰影背景

1 陰影背景qwidget構造設定 setfixedsize 900,640 setwindowflags qt framelesswindowhint setattribute qt wa translucentbackground,true setwindowopacity 0.7 setdlg...