zoukankan      html  css  js  c++  java
  • 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)是奇数,则直径中点是一条边,对两棵子树分别做即可

  • 相关阅读:
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    JAVA-蓝桥杯-算法训练-字符串变换
    Ceph:一个开源的 Linux PB 级分布式文件系统
    shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
  • 原文地址:https://www.cnblogs.com/Grice/p/13257510.html
Copyright © 2011-2022 走看看