牛客网暑期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题切了……

原文地址:https://www.cnblogs.com/Amadeus/p/9544714.html