用户工具

站点工具


2022-2023:teams:kunkunkun:2022-nowcoder-6

2022 牛客暑期多校训练营6

C

首先将所有边从邻接矩阵中取出来,设有$m$条边,然后按边权排序,然后依次枚举每条边,考虑该边的贡献

对于第$i$条边$(u,v,w)$,只需要知道,只使用前$i-1$条边并且使$u,v$不连通的方案数$Cnt$,则该边的贡献为 $$ Cnt*w*2^{m-i} $$

设$F(S)$表示,只使用比当前边小且两端点都在$S$内的边,使$S$成为一个连通块的方案数

设$H(S)$表示,前$i-1$条边中,两端点都在$S$内的边数是多少,这个可以用高维前缀和得到

设$C(S)$表示,只使用前$i$条在$S$内的边,加入第$i$条边恰好使$S$连通的方案数,可以用子集卷积得到 $$ C(S)=\sum_{\substack{u\in x,v\notin x\\u\notin y,v\in y\\x\bigcap y=0\\x\bigcup y=S}}F(x)F(y) $$ 然后可以计算需要的方案数 $$ Cnt=\sum_{u,v\in S}C(S)*2^{H(U\bigoplus S)} $$

然后将当前边加入图中,得到新的$F'(S)$,只有两端点都在$S$内的$F(S)$才会发生变化: $$ F'(S)=F(S)+[u,v\in S]*(C(S)+F(S)) $$

F-Hash

设树的根节点为 $1$,其 $Hash$ 值为 $\displaystyle\sum_{i=1}^n\sum_{j=i+1}^nX^iY^jZ^{lca(i,j)}$,构造一颗满足其 $Hash$ 值的树,节点数小于等于 $50$。
设树有 $37$ 个节点,全部与 $1$ 相连,考虑将节点 $2\sim 37$ 分为 $6$ 组,每组中取两个节点连到另外一个节点上,会有 $C_5^2\cdot 6=60$ 种情况,$6$ 组共有 $60^6$ 种情况,由于 $X,Y,Z$ 随机给出,每种情况都可视为随机的,则存在解的概率为 $1-(\dfrac{Mod-1}{Mod})^{60^6}\approx 1-5.0341\cdot{10^{-21}}$。

Replay

G是一个签到题,是一个有点小麻烦的模拟。看到题之后没怎么想就直接写了,也就过了。也算是大概确定了新的战略是比较可行的。

B是一个树上倍增+差分,也是和队友讨论出一个比较可行的解之后就直接写了,也就过了。

期间高湘一一直在玩J。偷听了许多。于是在高湘一wa了一发J之后自己把它过了。

M是一个快乐的对抗搜索(简单dp)。也不算非常困难。

A花了不少时间。期间高湘一给了一个看起来很正确的解法,但是被一些数据hack掉了。搞了一个乱搞做法反而过了那些样例,之后过了。

之后开始玩I题。最开始尝试玩了(1,0)(0,1)(1,1)三个向量,但是因为这三个向量比较特殊,导致玩出一个比较错误的结论。后来开始考虑任意向量该怎么做,发现如果向量不交的话有一个很显然合理的做法,于是给向量乘上一个比较大的值确保它们不交,然后就可以过了。

这场感觉算是涨了不少自信吧。虽然也没有做到最好。

Dirt

J:高湘一wa的一发。大概是手玩的过程中出了些问题吧。事实证明猜结论比手玩靠谱(?)

I:最初是给向量依次乘以7,wa掉了。想了想仿佛确实会有问题,于是改成乘11,又wa掉了。之后直接改成37,过了。

2022-2023/teams/kunkunkun/2022-nowcoder-6.txt · 最后更改: 2022/08/31 15:41 由 purplewonder