zoukankan      html  css  js  c++  java
  • 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|)的子集个数为(sumlimits_{i=1}^m {nchoose i}-{B_i-1choose i})(不考虑空集)

    证明:
    这里证明(B_1=1)的,然后(B_1)等于其他数的大体过程也是下面这样,但有些细节不同
    (egin{aligned}\ F&=sumlimits_{i=1}^n sumlimits_{j=1}^{d_i}{i-1choose j-1}\ &=sumlimits_{k=1}^m sumlimits_{i=B_k}^{B_{k+1}-1}sumlimits_{j=1}^k {i-1choose j-1}\ &=sumlimits_{k=1}^m sumlimits_{j=1}^k sumlimits_{i=B_k}^{B_{k+1}-1}{i-1choose j-1}\ &={B_2-1choose 1}+sumlimits_{k=2}^m sumlimits_{j=1}^k {B_{k+1}-1choose j}-{B_k-1choose j}\ &=sumlimits_{i=1}^m {nchoose i}+sumlimits_{k=2}^m sumlimits_{j=1}^k -{B_k-1choose j}+sumlimits_{j=1}^{k-1}{B_k-1choose j}\ &=sumlimits_{i=1}^m {nchoose i}-{B_i-1choose 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 {nchoose m+1}-({nchoose m+1}-{n-m-2choose 0})={n-m-2choose 0}ge 1)
    ((2))(1)个数相同
    ((1))类似

    利用结论2随便搞一下就好了

    题外话

    公式细节好多啊...
    结论(2)的弱化版就是二进制与(k)是一一对应的,不是很懂,哪位大佬知道在下面说一下吧

  • 相关阅读:
    AS3 条件编译
    as3 中trace() 函数对效率的影响
    将as3代码转换成为js代码
    flash图标插件
    STAR面试法
    虚拟机window7与主机之间文件复制设置
    linux虚拟机网络设置好ping百度没有用
    Linux常用命令
    路由器wiff设置
    linux网络启动报错
  • 原文地址:https://www.cnblogs.com/Grice/p/12663620.html
Copyright © 2011-2022 走看看