• HPC2020


    D

    看错了一下题目意思,特别说一下:任意两个商店间只需要花(1)个单位的时间即可前往

    若我们确定要前往的商店的集合(S),对于(forall i,jin S),若(i)(j)前面,则满足:

    [1+a_{i} imes(t+1)+b_{i}+1+a_{j} imes(t+1+a_{i} imes(t+1)+b_{i}+1)+b_{j} leq1+a_{j} imes(t+1)+b_{j}+1+a_{i} imes(t+1+a_{j} imes(t+1)+b_{j}+1)+b_{i}Leftrightarrow frac{a_{j}}{b_{j}+1} geq frac{a_{i}}{b_{i}+1} ]

    我们发现这跟时间(t)没什么关系,那么排序,即顺序已经确定好了
    对于(a_i eq 0)的集合,其对于时间来说是指数变化的,最多只能选择(30)

    E

    将原矩阵扩展成(2^n)(2^m)列,第(0)行第(0)列均为(0)
    (b_{i,j})为前缀和

    考虑计算答案上界,枚举(0le i<j<2^n),即上边界为(i+1)下边界为(j),令(c_k=b_{j,k}mathrm{xor}b_{i,k})
    其能对答案的贡献为((sumlimits_{p=0}^{2^m-1} [c_p = 0]) imes (sumlimits_{p=0}^{2^m-1} [c_p = 1]) leq frac{2^{2m}}{4})
    故答案的上界为(frac{2^n(2^n-1)}{2} imes frac{2^{2m}}{4})

    给出构造(b_{i,j} = mathrm{popcount}(i mathrm{and} j) mod 2),下面证明其能达到上界

    先考虑(n=m)的情况,此时上界为(frac{8^n(2^n-1)}{8})
    枚举左上角((i+1,k+1))右下角((j,l)),其贡献为(b_{i,k} mathrm{xor} b_{i,l} mathrm{xor} b_{j,k} mathrm{xor} b_{j,l})
    由于在模(2)意义下,(mathrm{popcount}(x)mathrm{xor}mathrm{popcount}(y)=mathrm{popcount}(xmathrm{xor}y))
    则贡献为:(mathrm{popcount}((i mathrm{and} k) mathrm{xor} (i mathrm{and} l) mathrm{xor} (j mathrm{and} k) mathrm{xor} (j mathrm{and} l)) mod 2)

    (i=j)(k=l)时贡献显然为(0),忽略(i<j,k<l)的限制,最终答案除(4)即可
    单独考虑某一位,(i,j,k,l=0/1),当({i,j}={0,1},{k,l}={0,1})时有贡献(1)
    即有贡献的个数为(4),无贡献的个数为(12)

    枚举有多少位有贡献:

    [ans = sumlimits_{i=0}^n [2 mid i] inom{n}{i} 4^i 12^{n-i} ]

    单位根反演可得([2 mid i]=frac{1-(-1)^i}{2})

    [egin{align*} ans &= sumlimits_{i=0}^n frac{1-(-1)^i}{2} inom{n}{i} 4^i 12^{n-i} \ &= frac{sumlimits_{i=0}^ninom{n}{i} 4^i12^{n-i} - sumlimits_{i=0}^ninom{n}{i} (-4)^i12^{n-i}}{2} \ &= frac{16^n-8^n}{2} \ &= frac{8^n(2^n-1)}{2} end{align*} ]

    除以(4)(frac{8^n(2^n-1)}{8})

    再考虑(n eq m),令(n<m),此时(k,l)还有(m-n)位未填,此时不管其怎么填,都不会改变(mathrm{popcount})的值
    (frac{8^n(2^n-1)}{8} imes 4^{m-n} = frac{2^n(2^n-1)}{2} imes frac{2^{2m}}{4})

    F

    若不考虑(H(V,E'))的直径等于(G(V,E))的直径,合法的H满足

    • H的直径只有一条
    • 选取H中任意一点,bfs,得到dep,若(|dep_{u}-dep_v|le 1),则(u,vin E')

    从而我们发现,钦定(x)后,仅得到H的dep数组,即可还原H

    那么考虑进G

    • 钦定了H的直径
    • (Esubseteq E'):若((u,v)in E),则(|dep_u-dep_v|le 1)

    令G直径为(L),下面考虑(L)是偶数
    那么直径的中点(x)确定,令其为根。
    但特殊的,令(dep_x=0)((u,v)in E),对应的dep数组满足(dep_u-dep_vin{-1,0,1}),对于(forall i,dep_{i}in[-frac{L}{2},frac{L}{2}])。那么我们可以发现对于一个H,其被统计了两次,最后答案除以(2)即可

    具体的方法就是,我们可以找到所有的关键点(即距离(x)(frac{L}{2}))的点,然后对于((u,v)in E),枚举(dep_u-dep_v),对关键点进行转移

    (L)是奇数,则直径中点是一条边,对两棵子树分别做即可

  • 相关阅读:
    通过asp.net 生成xml文件
    listbox 多选处理
    girdview 找到其焦点的笨办法
    关于.net 中调用script的alert后 css失效的办法
    从数据库中读数据中寻找若隐若现的OOP
    Gitlab的安装部署和介绍
    守住你的网站:防御DDoS攻击指南
    分析SQL语句使用资源情况
    Linux下Sniffer程序的实现
    NDIS resources
  • 原文地址:https://www.cnblogs.com/Grice/p/13257510.html
Copyright © 2020-2023  润新知