jzoj6233
题意
你需要构造一个\(n\)个点的二分图
定义\(F(A)\)表示左部点集\(A\)能够到达的右部中的点
使得满足 \(F(A)<|A|\) 的集合恰好有 \(k\) 个
\(1≤n≤32 , 0≤k≤2^n\)
做法
显然\(k=2^n\)时无解
反过来考虑\(|F(A)|\ge |A|\)
结论1:强制\(F_{i} \subset F_{i+1}\),记\(d_i=|F_i|\),强制\(d_i-d_{i-1}=0~or~1\),令\(B=\{x|d_x-d_{x-1}=1\}\),设\(|B|=m\),则满足\(|F(A)|\ge |A|\)的子集个数为\(\sum\limits_{i=1}^m {n\choose i}-{B_i-1\choose i}\)(不考虑空集)
证明:
这里证明\(B_1=1\)的,然后\(B_1\)等于其他数的大体过程也是下面这样,但有些细节不同
\(\begin{aligned}\\ F&=\sum\limits_{i=1}^n \sum\limits_{j=1}^{d_i}{i-1\choose j-1}\\ &=\sum\limits_{k=1}^m \sum\limits_{i=B_k}^{B_{k+1}-1}\sum\limits_{j=1}^k {i-1\choose j-1}\\ &=\sum\limits_{k=1}^m \sum\limits_{j=1}^k \sum\limits_{i=B_k}^{B_{k+1}-1}{i-1\choose j-1}\\ &={B_2-1\choose 1}+\sum\limits_{k=2}^m \sum\limits_{j=1}^k {B_{k+1}-1\choose j}-{B_k-1\choose j}\\ &=\sum\limits_{i=1}^m {n\choose i}+\sum\limits_{k=2}^m \sum\limits_{j=1}^k -{B_k-1\choose j}+\sum\limits_{j=1}^{k-1}{B_k-1\choose j}\\ &=\sum\limits_{i=1}^m {n\choose i}-{B_i-1\choose i}\\ \end{aligned}\)
结论2:将\(d_i-d_{i-1}\)写成二进制的形式,\(d_1-0\)为最低位,\(d_{n}-d_{n-1}\)为最高位。将这些数二进制中\(1\)的个数为第一关键字,大小为第二关键字,第一关键字升序排,第二关键字降序,那么这个数的排名就是\(|F(A)|\ge |A|\)的子集个数
证明:
\((1)\)\(1\)个数不同
\(F_{m+1} - F_{m} \ge {n\choose m+1}-({n\choose m+1}-{n-m-2\choose 0})={n-m-2\choose 0}\ge 1\)
\((2)\)\(1\)个数相同
同\((1)\)类似
利用结论2随便搞一下就好了
题外话
公式细节好多啊...
结论\(2\)的弱化版就是二进制与\(k\)是一一对应的,不是很懂,哪位大佬知道在下面说一下吧