• 牛客网暑期ACM多校训练营(第九场)


    Rank Solved A B C D E F G H I J
    68/245 2/10 O Ø Ø Ø O Ø Ø Ø Ø .

    O: 当场通过

    Ø: 赛后通过

    .: 尚未通过

    A Circulant Matrix

    solved by chelly


    chelly's solution

    直接FWT

    B Enumeration not optimization

    upsolved by chelly


    chelly's solution

    (f(S,i))表示以集合S中的点连出一个生成树,i为根的方案数,(g(S,i))表示以集合S中的点连出一个生成树,i为根,所有情况下的所有节点的深度和
    f和g可以通过枚举子集、合并子集来转移
    考虑枚举每一条边(x,y,w),算贡献,即(x,y)在多少个有根生成树中出现
    因为在有根树中,边都是有向的,所以x->y和y->x都要分别计数,我们不妨来计数x->y
    我们枚举x包含的点集S,那么y包含的点集就是U-S,对答案的贡献是(g(S,x)*f(U-S,y))
    因为我们需要求的是以S中任意一个点为根,x在其中的深度和,这个东西可以反过来考虑,就相当于以x为根的所有点的深度和
    时间复杂度(O(n^23^n))

    C Gambling

    upsolved by chelly&ch


    chelly's solution

    首先可以列出一张表(g(i,j)),表示A已经赢了i场,B已经赢了j场的情况下,我已经有的利润,同理(f(i,j))表示下一局应该下的钱数
    显然有(g(i,j)=frac{g(i,j+1)+g(i+1,j)}{2})(f(i,j))可以通过差分得到,于是我们可以通过(O(n^2))得到这个表,现在需要优化
    进一步发现(f(i,j)=frac{f(i,j+1)+f(i+1,j)}{2}),可以把这个(frac{1}{2})提出来,然后f(i,j)的值就可以理解为:从(n-1,n-1)走到(i,j)的方案数 除以 2^(坐标差)
    这个就可以写成一个式子了,于是每个f(i,j)都可以写成一个组合数,问题就解决了

    D The number of circuits

    upsolved by chelly


    chelly's solution

    考虑利用BEST theorem求解欧拉回路的个数,我们容易发现对于这个图,主要是(t_w(G))不好求,BEST theorem后面的那一项一定是(((k-1)!)^n)
    求解(t_w(G)),如果用Matrix-Tree定理,那么显然复杂度不够。
    注意到k很小,所以这个是可以用状态压缩+矩阵乘法做的,所以对于固定的k,(t_w(n))一定是个线性递推,我们可以用Matrix-tree定理暴力跑出前面若干项,然后丢到BM里
    最后不要忘记乘上(((k-1)!)^n)

    E Music Game

    solved by chelly


    chelly's solution

    对期望dp一下,时间复杂度(O(n^2))

    upsolved by chelly


    chelly's solution

    考虑对于每个位置维护(x^m),表示到当前位置为止的连续正确的得分期望,那么对于下个位置,对答案的额外贡献就是((x+1)^m-x^m),这个需要维护每一个(x^0,x^1,...,x^m),难以维护。考虑维护下降幂的贡献,最后再转成(x^m)。注意任何期望长度的0次下降幂总是1。时间复杂度(O(nm))

    F Typing practice

    upsolved by chelly


    chelly's solution

    建出Trie图,然后从所有danger节点反向跑BFS,得到每个状态点到单词节点的最短路径。然后询问串在Trie图上走就行了。

    G Longest Common Subsequence

    upsolved by chelly


    chelly's solution

    把同一个数字在4个序列中出现的位置抠出来形成一个四维空间的点
    题目就是需要找一个最长上升子序列,这个我们只需要对一维排序,另外三维用kdtree维护最大的dp值即可

    H Prefix Sum

    upsolved by chelly


    chelly's solution

    比较暴力的方法是可以对操作分块,可以通过这个题。
    题解给了很妙的做法。
    对于询问x,需要回答的是(sum_{1 leq i leq x} inom{x-i+k}{k}a[0][i]),其中有x和j两个变量,我们考虑把其拆分
    (ans=sum_{1 leq i leq x} sum_{0 leq j leq k} inom{x}{j} inom{k-i}{k-j}a[0][i])
    我们可以维护k+1个树状数组即可,注意这里需要定义负数意义下的组合数。
    时间复杂度(O(m log n k))

    I Juggernaut

    upsolved by chelly


    chelly's solution

    考虑如果没有异或为0的限制,那么显然有

    其中a表示对于行,走a步走回同一个横坐标,b表示对于列,走b步走回同一个横坐标,设(l=lcm(a,b))
    那么(frac{l}{a})就表示对于同一列,一个等价类出现了多少次,(frac[l}{b})就表示对于同一行,一个等价类出现了多少次
    那么(frac{n}{a} imes frac{m}{frac{l}{a}})的矩阵就是个单位矩阵,(frac{n}{frac{l}{b}} imes frac{m}{b})的矩阵也是个单位矩阵
    现在考虑有异或为0的限制,这意味着原本(frac{nm}{l})个自由元会少掉一些

    • (frac{l}{a})为奇数,(frac{l}{b})为偶数,那么对于平铺矩阵的最后一列的那些自由元,将不再变成自由元,自由元数量减少(frac{n}{a})
    • (frac{l}{b})为奇数,(frac{l}{a})为偶数,那么对于平铺矩阵的最后一行的那些自由元,将不再变成自由元,自由元数量减少(frac{m}{b})
    • (frac{l}{a})为奇数,(frac{l}{b})为奇数,那么对于平铺矩阵的最后一行最后一列的自由元,将不再变成自由元,自由元数量建设好(frac{n}{a}+frac{m}{b}-1)
      注意此题的模数小于1e9,所以可以对(nmp)取模,最后除以(nm),要用__int128

    J Maze

    unsolved


    Replay

    这场比赛由chelly打的。
    首先chelly有点神志不清,大约画了1h才把E题切掉。然后就一直卡F了……到结束之前才发现A题是个水题,就把A题切了……

  • 相关阅读:
    14_最长公共前缀_字符串_简单
    5. 最长回文子串_字符串_中等
    187. 重复的DNA序列_字符串_中等
    lr_bn_batchsize_deformable convolution_Hard negative mining
    彻底搞懂HTTPs的加密原理
    20. 有效的括号_字符串_简单
    13_罗马数字转整数_字符串_简单
    202_快乐数_数组_简答
    组件
    World
  • 原文地址:https://www.cnblogs.com/Amadeus/p/9544714.html
Copyright © 2020-2023  润新知