代码源挑战赛 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)\)

posted @ 2025-12-27 00:16  yemuzhe  阅读(6)  评论(0)    收藏  举报