专栏文章

Atcoder Educational DP Contest 题解

个人记录参与者 1已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minifleu
此快照首次捕获于
2025/12/02 02:56
3 个月前
此快照最后确认于
2025/12/02 02:56
3 个月前
查看原文

A Frog 1

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

B Frog 2

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

C Vacation

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

D Knapsack 1

0101 背包模板题。

E Knapsack 2

观察到 1vi1031\leq v_i \leq 10^3,所以将上一题题改成以 vv 为下标来做 dpdp,设 dpvdp_v 表示在代价为 vv 时的最小重量,最后从大到小遍历一遍统计答案即可。

F LCS

dpi,jdp_{i,j} 表示 ss 字符串前 ii 个字符跟 tt 字符串前 jj 个字符的LCS,那么:
dpi,j={dpi1,j1+1                    (si=tj)max(dpi1,j,dpi,j1)       (sitj)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.
输出方案直接根据 dpdp 从后往前推即可。

G Longest Path

拓扑排序加 dpdp 即可(最长长度只可能从入度为 00 的点开始)。

H Grid 1

经典二位表格 dpdp

I Coins

从这题开始上升难度了。
dpi,jdp_{i,j} 表示前 ii 个硬币有 jj 个正面朝上的方案数,根据第 ii 个硬币有无朝上来递推即可。
注意 dpi,0dp_{i,0} 特殊判断。

J Sushi

期望 = 所有可能结果 ×× 对应概率的加权平均。
dp[c1][c2][c3]=dp[c1][c2][c3] = 当前还有 c1c1 个盘子剩 11 块、c2c2 个盘子剩 22 块、c3c3 个盘子剩 33 块时,吃完所有剩余寿司的期望操作次数。
当我们掷一次骰子:
掷到的盘子类型概率下一状态说明
空盘子(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=c1+c2+c3s = c_1 + c_2 + c_3:当前还有寿司的盘子数
  • E1=dp[c11][c2][c3]E_1 = dp[c_1-1][c_2][c_3] 是后续状态的期望。
  • EEdp[c1][c2][c3]dp[c1][c2][c3]
期望是对随机变量的“加权平均”。
这里的随机变量是“总操作次数”。
而总操作次数 == 11 ++(后续操作次数)。
所以期望也满足:E[总次数]=1+E[后续次数]E[总次数] = 1 + E[后续次数]
懂了这些,开始推式子。
E=1+NsNE+c1NE1+c2NE2+c3NE3E = 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
把上面式子中的 EE 项移到左边:
ENsNE=1+c1NE1+c2NE2+c3NE3E - \frac{N - s}{N} E = 1 + \frac{c_1}{N} E_1 + \frac{c_2}{N} E_2 + \frac{c_3}{N} E_3
左边变成:
sNE=1+c1NE1+c2NE2+c3NE3\frac{s}{N} E = 1 + \frac{c_1}{N} E_1 + \frac{c_2}{N} E_2 + \frac{c_3}{N} E_3
两边乘以 NN
sE=N+c1E1+c2E2+c3E3s \cdot E = N + c_1 E_1 + c_2 E_2 + c_3 E_3
所以:
E=N+c1E1+c2E2+c3E3sE = \frac{N + c_1 E_1 + c_2 E_2 + c_3 E_3}{s}
所以最终转移公式:
dp[c1][c2][c3]=N+c1dp[c11][c2][c3]+c2dp[c1+1][c21][c3]+c3dp[c1][c2+1][c31]c1+c2+c3dp[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]=0dp[0][0][0]=0(没寿司了,不需要操作)。
目标状态:dp[c1][c2][c3]dp[c1][c2][c3](一开始还有 c1c1 个盘子剩 11 块、c2c2 个盘子剩 22 块、c3c3 个盘子剩 33 块)。
因为这题的 dp[c1+1][c21][c3]dp[c1+1][c2-1][c3] 中有 c1+1c1+1dp[c1][c2+1][c31]dp[c1][c2+1][c3-1] 中有 c2+1c2+1,按 c1,c2,c3c1,c2,c3 的顺序会有没用到的状态,所以根据实际情况,选用 c3,c2,c1c3,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

评论

1 条评论,欢迎与作者交流。

正在加载评论...