GJ模拟赛 24_11-23

posted on 2024-12-15 05:21:20 | under | source

战况

GJ 说两题是 noip T3 难度,有点哈人。

赛时快速过了 T1,中途看错题以为 \(|b|\ne |c|\) 稍微耽误了时间。

然后磕 T2,之前总是忘记容斥导致吃大亏,于是这次很快想到容斥,但是发现和不容斥相比几乎没有区别。然后只想到了 \(O(2^{2n})\) 的做法甚至没调完,十分失败。赛后才看到 \(m\le 16\) 无语了。

结束前几分钟小章鱼说他会了只是有点难写,听了下完全没听懂。结果是他也看错题了。

题解

T1

题意:令字符串只能出现 \(A,B,C,D\)。一个串可以交换相邻两个字母、或者将一个子串 \(b_i\) 替换为 \(c_i\)\(b,c\) 提前给出,保证 \(\forall i\in [1,n],|b_i|=|c_i|\)。给出 \(k\),需要给所有 \(4^k\) 种字符串染色,满足若串 \(S\) 经过若干次操作后可以变为 \(T\),则 \(S,T\) 不同颜色。问颜色数最少多少。

\(k\le 30,n\le 50\)

做法

首先可以任意定序,所以我们只关心 \(a,b,c,d\) 出现了多少次,用四元组 \((a,b,c,d)\) 表示。则所有出现次数相同的串必须染不同色,不难组合数计算。

然后每个四元组视为点,点权为对应串的数量。然后根据 \(b,c\) 连边。点的总数 \(k^3\),实际也就 \(5000\) 左右,每个点连至多 \(n\) 条边,图的大小可以接受。

缩点,强联通分量内部的点必须染不同色。则最小颜色数即为最长链点权和。显然是答案下界,然后也容易证明存在染色方案。

复杂度 \(O(nk^3)\)

T2

题意:给出一棵叶子为 \(2^n\) 个的满二叉树,然后给每个叶子编号,为一个 \(2^n\) 个排列。其中有 \(m\) 个特殊编号 \(x_1\dots x_m\)。然后从底至上每个点左右儿子打比赛,设其编号分别为 \(a,b\),假如两者中存在 \(1\)。那么若另一者不是特殊编号则 \(1\) 获胜,否则另一者获胜;否则编号较小者获胜。求有多少种排列使得 \(1\) 为冠军。

\(n,m\le 16\)。保证 \(x_1<x_2\dots <x_m\)

做法

\(1\) 的祖先链拎起来,依次挂着大小为 \(2^0\dots 2^{n-1}\) 的子树,子树的胜者即为其中最小者。

\(1\) 的位置不重要,最后乘上 \(2^n\) 即可。那么问题变为往这些子树里填数,满足其中最小者均不为特殊编号。

\(m\) 实在太小了,所以容斥。钦定一些特殊点作为一些子树的最小值,其它子树的随意填最后再考虑即可。依次考虑编号 \(2\dots 2^n\) 将其填入子树,发现不好做。套路地,从大到小填数,那么我现在只关心之前有多少编号被填入。

又因为本题的特殊性,知道多少编号被填入,即可知道哪些子树被填满了。

那么自然有状态:\(f_{i,S}\) 表示考虑特殊 \(x_i\dots x_m\),且 \(S\) 集合中的子树已被钦定的方案数。转移显然:

  1. 当前点不钦定:\(f_{i,S}\gets f_{i+1,S}\)
  2. 当前点钦定,枚举放子树 \(j\in S\)\(f_{i,S}\gets f_{i+1,S-2^j}\times A_{2^n-x_i-S+2^j}^{2^j-1}\times 2^j\)

答案即为 \(\sum f_{1,S}\times (-1)^{|S|}\times (2^n-1-S)!\)

总结

远远不到 noip T3 难度吧,至少对于今年而言。

一定要审好题!

posted @ 2026-01-14 17:32  Zwi  阅读(0)  评论(0)    收藏  举报