傳送門
求 nn
n 個帶標號的點能滿足如下條件的無向圖個數:
不存在重邊和自環。
不存在三個點 a,b
,c
a,b,c
a,b,
c,使三個點距離兩兩相等。
輸出答案對 1004535809
1004535809
100453
5809
(479×2
21+
1479\times2^+1
479×22
1+1,質數)取模的結果。
資料範圍:n≤1
06
n\le10^6
n≤106。
有乙個結論,即滿足條件的無向圖,要麼是一條鏈,要麼是乙個長度不為 3
33 的倍數的環。
因為當乙個點 x
xx 的度數 ≥
3\geq 3
≥3時,與 x
xx 相連的 3
33 個點之間距離兩兩相等,不符合題意。
我們先構造出鏈的 egf,即:
a (x
)=∑i
=0ni
!2xi
i!=∑
i=0n
xi
2a(x)=\sum_^n\frac\frac=\sum_^n\frac
a(x)=i
=0∑n
2i!
i!x
i=i
=0∑n
2xi
就是長度為 i
ii 的鏈有 i!2
\frac
2i!
種。還有注意一次項的係數為 111。
然後是環的 egf(注意環長不為 3
33 的倍數):
b (x
)=∑i
=4n[
i%3=
̸0]i
!2ix
ii!=
∑i=4
n[i%
3≠0
]xi2
ib(x)=\sum_^n[i\%3=\not 0]\frac\frac=\sum_^n[i\%3=\not 0]\frac
b(x)=i
=4∑n
[i%
3≠
0]2i
i!i
!xi
=i=4
∑n[
i%3=
̸0]
2ixi
如果設整張圖的 egf 為 g(x
)=∑i
=0ng
ixii
!g(x)=\sum\limits_^g_i\frac
g(x)=i
=0∑n
gi
i!xi
,那麼答案就是 g
ng_n
gn,即 g(n
)×n!
g(n)\times n!
g(n)×n
!。由於整張圖是 a
aa 和 b
bb 的並集拼出來的,所以 g=e
a+
bg=e^
g=ea+b
,多項式 exp 即可。
時間複雜度 o(n
logn)
o(n\log n)
o(nlogn)
。
#include
#include
#include
#include
#define n 5000005
#define p 1004535809
using
namespace std;
typedef vector<
int> poly;
const
int g=3;
int n,pos[n]
,fac[n]
,inv[n]
;int
add(
int x,
int y)
intdec
(int x,
int y)
intmul
(int x,
int y)
intpower
(int a,
int b,
int ans=1)
int*w[22]
,c=21
;void
prework()
void
init
(int lim)
void
ntt(poly &f,
int lim,
int type)}}
if(type==-1
&&(reverse
(f.begin()
+1,f.begin()
+lim),1
))}poly operator
*(poly a,poly b)
poly inv
(poly a,
int len)
b.resize
(len)
;return b;
}poly deriv
(poly a)
poly integ
(poly a)
poly ln
(poly a,
int len)
poly exp
(poly a,
int len)
b.resize
(len)
;return b;
}int
main()
BZOJ 4228 Tibbar的後花園
please contact lydsy2012 163.com 警告 解題思路 可以證明最終的圖中所有點的度數都 3 且不存在環長是 3 的倍數的環。這是充分必要的,由於圖不聯通,其就是由若干個聯通塊組成的,每個聯通塊是一條鏈或者環長不是 3 的倍數的環,然後強上egf就好了。列出鏈的egf和環的...
Tibbar的後花園 生成函式,多項式exp
這篇文章僅限於沒有入門生成函式的蒟蒻讀,dalao勿噴 題目的資料範圍是 n 2 題目給出的限制,其實就是對於每乙個聯通塊 1.不存在乙個點度數 ge 3 2.不存在乙個長度為 3 的倍數的環 可以看到,乙個大小為 n 的聯通塊,合法方案只有為一條鏈,或者乙個長度不為3的倍數的環 設 f n 為大小...
BZOJ3450 BZOJ4318 期望的線性性質
這兩個題的套路是一樣的,放在一起說。因為期望有線性性質,也就是說我們可以分開算每一位的期望,再加起來就是答案。由於e x 1 2 x 2 2 e x 1e x 1 2 x2 2e x 1,所以我們只需要維護乙個期望長度即可,維護的方法十分簡單,相信聰明的你很快就能明白。include using n...