XSY1519

题意

\(n\)盏灯,\(m\)个限制。每个限制\((x,y)\)表示第\(x\)盏灯与第\(y\)盏灯之间必须且只能亮一盏。
记一种情况\(x\)亮着的灯的数量为\(f_x\),求\(\sum {(f_x)}^k\)
\(n\leq 200000,k\leq 100\)

做法

二分图,然后分连通块处理

\(x^n=\sum\limits_{i} S2(n,i)x^{\underline{i}}=\sum\limits_{i} {x\choose i}S2(n,i)i!\)

\(f_i\)\(i\)个亮的方案数
那么要算的实际是这个\(f_ii^n =f_i\sum\limits_{j}{i\choose j}S2(n,j)j!\)

那么维护\(f_i'=\sum\limits_j f_j{j\choose i}\),那么答案就是\(\sum\limits_{i=0}^k f_i'S2(k,i)i!\)

那加入的新连通块两种颜色\((s1,s2)\)
考虑将\(s1\)融进去,那将\(f_i'\)转化成\(f_i''=\sum\limits_{j}f_{j-s1}{j\choose i}\)
考虑\(s1=1\)\(f_i''=\sum\limits_{j}f_{j-1}{j\choose i}=f_i'+f_{i-1}'\),其他情况就做若干次就行

\(O(nk)\)

posted @ 2020-04-11 10:05  Grice  阅读(121)  评论(0)    收藏  举报