CF2034F2 Khayyam's Royal Decree
题目大意:
Khayyam 有一个宝箱,宝箱里初始有 \(n\) 个红宝石和 \(m\) 个蓝宝石。一个红宝石的价值为 \(2\),一个蓝宝石的价值为 \(1\)。他还有一个背包,初始为空。另外,他还有 \(k\) 张卷轴,第 \(i\) 张卷轴上有数对 \((r_i,b_i)\)。
Khayyam 将进行一个游戏,游戏共 \(n+m\) 轮,每轮流程如下:
- Khayyam 从宝箱中等概率随机拿出一个宝石。
- 他将这个宝石放入背包中。
- 若存在一张卷轴 \(i\),使得宝箱中恰有 \(r_i\) 个红宝石和 \(b_i\) 个蓝宝石,将所有背包里的宝石的价值翻倍。
一个宝石的价值可以被多次翻倍。
求游戏结束时 Khayyam 背包里宝石的价值总和的期望值,对 \(998244353\) 取模。
\(n, m \le 2 \times 10^5, k \le 5 \times 10^3\)
解题思路:
转化可以想成从 \((0, 0)\) 走到 \((n, m)\),然后每次可以向下或向右走一格。
我们在 \(k \le 500\) 的时候是很好做的,因为可以枚举上一个关键点的位置然后再容斥 dp 计算答案。
这样是 \(O(k^3)\) 的,且式子中带有组合数,非常不好优化。
那么这条路基本就不可行了。
考虑每条路上每个关键点的贡献。
设关键点路径为 \(p_{0}, p_{1} \sim p_{k + 1}\),其中 \(0\) 是起点,\(k + 1\) 是终点,答案为:
\[\sum_{i = 1}^{k + 1} (2 \times (x_{p_{i}} - x_{p_{i - 1}}) + y_{p_{i}} - y_{p_{i - 1}}) \times 2^{k - i + 1}
\]
那么第 \(1 \le i \le k\) 对答案的贡献是:
\[\sum_{i = 1}^{k} (2 \times x_{p_{i}} + y_{p_{i}}) \times 2^{k - i}
\]
然后第 \(k + 1\) 对答案的贡献是:
\[2 \times n + m
\]
那么我们只需要求出每个节点开头的路径长度的2次幂再乘上路径条数的和即可。
考虑组合意义:\(2 ^ {k - i}\) 是 \((\sum_{l = 0}^{k - i - 1} 2^{i}) + 1\)。
有了这个转化,我们 dp 转移的时候就不需要考虑是否一定是下一个经过的了。
时间复杂度将为 \(O(k^2)\)。

浙公网安备 33010602011771号