代码源挑战赛 Round 43
A
简单题
B
简单题
C
简单题
D
排序后枚举最小的元素 \(b _ i\),则选取 \(j > i\) 且 \(b _ i \le b _ j \le b _ i + k\) 内的 \(b _ j\) 都是合法的。
双指针维护可行的最大 \(j\),对答案贡献为 \(2 ^ {j - i}\)。
E
直接建分层图 \((x, y, k)\) 表示在 \((x, y)\) 位置、手上有 \(k \in [0, 1]\) 只青蛙,bfs 转移。
F
将 AC 视为 0、WA 视为 1。
直接 dp 可能有点困难。考虑单次容斥,转化成要求每一段 1 的长度都 \(< m\)。
设 \(f _ {i, j}\) 为目前填了 \(i\) 个 0 和 \(j\) 个 1 的方案数,初值 \(f _ {0, j} = 1\)(\(0 \le j < m\))也就对应着 \(11111\ldots\) 的形式。
转移每次强制在末尾追加一个 0 和若干个 1 组成的 \(01111\ldots\) 的形式,于是 \(f _ {i, j} \leftarrow f _ {i - 1, j - k}\)(\(0 \le k < m\)),可以直接前缀和优化。
再考虑计算答案。假设总共有 \(x\) 个 1,枚举 Bob 使用了 \(i\) 次操作,有 \(\binom x i\) 种选择。
然后 jiangly 的其他 \(x - i\) 次操作必须填 1,这 \(i\) 次操作可以任意填,故方案数为 \(g (x) = \sum \limits _ {i = 0} ^ k \binom x i 2 ^ i\)。
所以答案为 \(\displaystyle \sum _ {i = 0} ^ n f _ {n - i, i} \times g (i)\)。

浙公网安备 33010602011771号