description
傳送門題解
upd:原來這是二項式反演來著qwq…貼一下容斥題的一點點做法.
首先顯然先求方案數g[i
]g[i]
g[i]
表示只有i
ii種出現了s
ss次的方案數
那怎麼說也要求乙個f[i
]f[i]
f[i]
表示至少有i
ii種出現了s
ss次的方案數
f [i
]=cm
i∗cn
i∗s∗
(i∗s
)!in
v[s]
i∗(m
−i)n
−i∗s
f[i]=c_m^i*c_n^*\frac*(m-i)^
f[i]=c
mi∗
cni∗
s∗i
nv[s
]i(i
∗s)!
∗(m
−i)n
−i∗s
i nv
[s]inv[s]
inv[s]
表示s !s!
s!的逆元我們寫一下乙個東西,豎行表示g
gg,橫行表示f
注意到這是乙個倒三角
中間的東西表示會被算幾次
那麼 後面的係數是可以從上一行推下來的
要記住容斥的這種推係數做法啊
那麼式子就有了
g [i
]=∑j
=i(−
1)j−
i∗cj
i∗f[
j]g[i]=\sum_ (-1)^*c_j^i*f[j]
g[i]=j
=i∑
(−1)
j−i∗
cji
∗f[j
]把組合數拆開
g [i
]=∑j
=i(−
1)j−
i∗j!
i!(j
−i)!
∗f[j
]g[i]=\sum_(-1)^*\frac*f[j]
g[i]=j
=i∑
(−1)
j−i∗
i!(j
−i)!
j!∗
f[j]
把i !i!
i!移項,j!j!
j!扔到f [j
]f[j]
f[j]
裡面可以知道
g [i
]∗i!
=∑j=
i(−1
)j−i
(j−i
)!∗f
[j]∗
j!g[i]*i!=\sum_\frac}*f[j]*j!
g[i]∗i
!=j=
i∑(
j−i)
!(−1
)j−i
∗f[
j]∗j
!後面那個項把(−1
)j−i
(j−i
)!\frac}
(j−i)!
(−1)
j−i
反項,就可以直接卷積求出來了
注意預處理的複雜度要壓到max
(n,m
)max(n,m)
max(n,
m)不然bz會跪…
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define mp(x,y) make_pair(x,y)
#define pll pair
#define pii pair
using
namespace std;
inline
intread()
while
(ch>=
'0'&&ch<=
'9')
return x*f;
}int stack[20]
;inline
void
write
(int x)if(
!x)int top=0;
while
(x)stack[
++top]
=x%10
,x/=10;
while
(top)
putchar
(stack[top--]+
'0');}
inline
void
pr1(
int x)
inline
void
pr2(
int x)
const
int mod=
1004535809
;const
int maxn=
100005
;const
int maxm=
10000005
;int
pow_mod
(int a,
int b)
return ret;
}int a[maxn*4]
,b[maxn*4]
;int r[maxn*4]
,l,ln;
void
ntt(
int*y,
int len,
int on)}}
if(on==-1
)}int pre[maxm]
,inv[maxm]
;intc(
int n,
int m)
int n,m,s,w[maxn]
;voidad(
int&x,
int y)
intmain()
else
break;}
for(
int i=
0;i<=m;i++
)ntt
(a,ln,1)
;ntt
(b,ln,1)
;for
(int i=
0;i)a[i]
=1ll
*a[i]
*b[i]
%mod;
ntt(a,ln,-1
);int ans=0;
for(
int i=m;i<=2*
(m+1)-
1;i++
)pr2
(ans)
;return0;
}
bzoj 3622 容斥原理
題意 給出有n個元素的集合a和集合b,所有2n個元素互不相同,求將a集合中的元素和b集合中的元素兩兩配對,使a的元素大於b中元素的對數恰為n k2對。設f i j 表示a中的前i個元素配對後至少有j對滿足a的元素大於b中元素。那麼先將a和b排序,設ne x i 表示b中最後乙個小於a中i元素的位置。...
HAOI 2018 染色(容斥 NTT)
設 f k 為強制選擇 k 個顏色出現 s 種,其餘任取的方案數。則有 f k m k 不難看出,這個方案可能包括了超過 k 種顏色,也有重複的方案,所以恰有 k 個顏色出現 s 種的方案 ans k 滿足 ans k sum 1 f i 最終化簡得到 ans k sum i f i cdot ov...
容斥原理 數論
兩個集合的容斥關係公式 a b a b a b a b 重合的部分 三個集合的容斥關係公式 a b c a b c a b b c c a a b c 最後可以推廣到n個集合,集合裡的元素為奇數則加,偶數減 hdu 4135 很簡單,直接求出所有的質因子,然後容斥解決 author crystal ...