Atcoder Educational DP Contest 题解

· · 个人记录

A Frog 1

dp_i 为跳到第 i 个台阶的方案数,递推即可。

B Frog 2

发现 1\leq k \leq 100,仿照第一题即可。

C Vacation

dp_{i,1/2/3} 表示太郎君在第 i 天做了 A(1)B(2)C(3) 所获得的最大总幸福度,简单递推即可。

D Knapsack 1

## E Knapsack 2 观察到 $1\leq v_i \leq 10^3$,所以将上一题题改成以 $v$ 为下标来做 $dp$,设 $dp_v$ 表示在代价为 $v$ 时的最小重量,最后从大到小遍历一遍统计答案即可。 ## F LCS 设 $dp_{i,j}$ 表示 $s$ 字符串前 $i$ 个字符跟 $t$ 字符串前 $j$ 个字符的`LCS`,那么: $$ dp_{i,j}=\left\{ \begin{aligned} dp_{i-1,j-1}+1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (s_i=t_j) \\ \max(dp_{i-1,j},dp_{i,j-1})\ \ \ \ \ \ \ (s_i\ne t_j) \\ \end{aligned} \right. $$ 输出方案直接根据 $dp$ 从后往前推即可。 ## G Longest Path 拓扑排序加 $dp$ 即可(最长长度只可能从入度为 $0$ 的点开始)。 ## H Grid 1 经典二位表格 $dp$。 ## I Coins 从这题开始上升难度了。 设 $dp_{i,j}$ 表示前 $i$ 个硬币有 $j$ 个正面朝上的方案数,根据第 $i$ 个硬币有无朝上来递推即可。 注意 $dp_{i,0}$ 特殊判断。 ## J Sushi > 期望 = 所有可能结果 $×$ 对应概率的加权平均。 $dp[c1][c2][c3] = $ 当前还有 $c1$ 个盘子剩 $1$ 块、$c2$ 个盘子剩 $2$ 块、$c3$ 个盘子剩 $3$ 块时,吃完所有剩余寿司的期望操作次数。 当我们掷一次骰子: | 掷到的盘子类型 | 概率 | 下一状态 | 说明 | |---|---|---|---| | 空盘子 | `(N - c1 - c2 - c3) / N` | 仍是 `(c1, c2, c3)` | 白操作,状态不变 | | 有 1 块寿司的盘子 | `c1 / N` | `(c1-1, c2, c3)` | 吃完,这个盘子变空 | | 有 2 块寿司的盘子 | `c2 / N` | `(c1+1, c2-1, c3)` | 吃掉 1 块 → 变成剩 1 块 | | 有 3 块寿司的盘子 | `c3 / N` | `(c1, c2+1, c3-1)` | 吃掉 1 块 → 变成剩 2 块 | 设: - $ s = c_1 + c_2 + c_3 $:当前还有寿司的盘子数 - $ E_1 = dp[c_1-1][c_2][c_3] $ **等**是后续状态的期望。 - $E$ 指 $dp[c1][c2][c3]$。 > 期望是对随机变量的“加权平均”。 > 这里的随机变量是“总操作次数”。 > 而总操作次数 $=$ $1$ $+$(后续操作次数)。 > 所以期望也满足:$E[总次数] = 1 + E[后续次数]$。 懂了这些,开始推式子。 $$ E = 1 + \frac{N - s}{N} \cdot E + \frac{c_1}{N} \cdot E_1 + \frac{c_2}{N} \cdot E_2 + \frac{c_3}{N} \cdot E_3 $$ 把上面式子中的 $ E $ 项移到左边: $$ E - \frac{N - s}{N} E = 1 + \frac{c_1}{N} E_1 + \frac{c_2}{N} E_2 + \frac{c_3}{N} E_3 $$ 左边变成: $$ \frac{s}{N} E = 1 + \frac{c_1}{N} E_1 + \frac{c_2}{N} E_2 + \frac{c_3}{N} E_3 $$ 两边乘以 $ N $: $$ s \cdot E = N + c_1 E_1 + c_2 E_2 + c_3 E_3 $$ 所以: $$ E = \frac{N + c_1 E_1 + c_2 E_2 + c_3 E_3}{s} $$ 所以最终转移公式: $$ dp[c1][c2][c3] = \frac{N + c1 \cdot dp[c1-1][c2][c3] + c2 \cdot dp[c1+1][c2-1][c3] + c3 \cdot dp[c1][c2+1][c3-1]}{c1 + c2 + c3} $$ 看懂这些,这题就好做了。 初始状态:$dp[0][0][0]=0$(没寿司了,不需要操作)。 目标状态:$dp[c1][c2][c3]$(一开始还有 $c1$ 个盘子剩 $1$ 块、$c2$ 个盘子剩 $2$ 块、$c3$ 个盘子剩 $3$ 块)。 因为这题的 $dp[c1+1][c2-1][c3]$ 中有 $c1+1$,$dp[c1][c2+1][c3-1]$ 中有 $c2+1$,按 $c1,c2,c3$ 的顺序会有没用到的状态,所以根据实际情况,选用 $c3,c2,c1$ 的顺序通过此题。 ## K Stones ## L Deque ## M Candies ## N Slimes ## O Matching ## P Independent Set ## Q Flowers ## R Walk ## S Digit Sum ## T Permutation ## U Grouping ## V Subtree ## W Intervals ## X Tower ## Y Grid 2 ## Z Frog 3