Educational DP Contest - AtCoder
点开链接即可看到题目
A~C
真正的入门题。
D~E
01背包模板。
F
最长公共子序列。
G
「DAG上的DP」入门。
H
二维DP入门。
I - Coins
简单概率DP,设f[i][j]表示前i枚硬币中有jj枚朝上的概率。比较容易推出转移方程
J - Sushi
一看题,发现不那么好设计状态。发现操作与盘子顺序无关,所以决定一个状态本质的只有「有1个寿司」「有2个寿司」「有3个寿司」的盘子的数量。
设f[i][j][k]表示还有i个盘子剩1个寿司、j个盘子剩2个寿司、k个盘子剩3个寿司的剩余操作次数的期望。
考虑从操作完的状态(f[0][0][0])往回推。在状态aa从状态b转移来时,aa的期望操作次数即为从(0,0,0)到bb的期望操作次数加上从bb到aa的期望操作次数(还要乘上转移概率)。设当前状态为f[i][j][k],记sum=i+j+k>0
首先,第一行是取到非空盘子的期望次数。显然选中非空盘子的概率为\frac{sum}{n}nsum,记为p,那么从开始操作到第一次选中非空盘子,期望操作次数为
i=1∑+∞i(1−p)i−1p=pi=1∑+∞i(1−p)i−1=p1−p∑i=1+∞i(1−p)i=p1−p[1−(1−p)]21−p=p1
然后,第二行中\frac{a}{sum}suma是在选中有寿司的盘子的条件下,选中「有1个寿司的盘子」的概率(条件概率)。所以(在选中有寿司的盘子的条件下)有\frac{a}{sum}suma的概率到达状态(i-1,j,k),则本状态的期望操作次数加上「目标状态的期望操作次数 × 到达目标状态的概率」。
第三、第四行同理。初始状态f[0][0][0]=0
K - Stones
这题属于「博弈论入门-公平组合游戏」。
定理 1:没有后继状态的状态是必败状态。
定理 2:一个状态是必胜状态当且仅当存在至少一个必败状态为它的后继状态。
定理 3:一个状态是必败状态当且仅当它的所有后继状态均为必胜状态。
状态很清楚了,就是当前剩余的石子数。设f[k]=0/1表示该状态是必胜/必败状态。从小到大转移(博弈过程的相反方向),枚举它的后继状态(在DP中是前驱状态),用定