宮水三葉在玩一款遊戲。
這是一款對城市進行建設的遊戲,遊戲裡有 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...