题解:P10111 [GESP202312 七级] 纸牌游戏

题目传送门


思路

从标签从题面不难看出,这道题需要使用 dp。
所以我们就按照 “dp 三部曲”来求解。

1.定义状态

首先,最容易想到的当然是设 d p i dp_i dpi 为前 i i i 轮的最大得分,但是我们会发现,光用一维的 d p i dp_i dpi 来表示,是远远不够的。

然后,我们考虑二维 dp。因为跟得分有关的还有出的牌。新的状态无非就是 d p i , j ( j ∈ { 0 , 1 , 2 } ) dp_{i,j}(j\in \{0,1,2\}) dpi,j(j{ 0,1,2}) 表示前 i i i 轮,在第 i i i 轮出 j j j 号牌时的最大得分嘛!如果这个你能理解,那么非常棒,你已经离第一步的成功不远了!

当你兴致勃勃的用这个思路写代码时,你会发现还是不够。我们只好使用三维 dp。因为换牌会导致扣分,所以状态应改为: d p i , j , k dp_{i,j,k} dpi,j,k 表示前 i i i 轮,在第 i i i 轮出 j j j 号牌,此时已经换了 k k k 次牌时的最大得分。

很好!那么我们的状态就定义好了!

2.赋初值

在这道题中,没有进行计算时(即第 0 0 0 轮), d p 0 , j , k dp_{0,j,k} dp0,j,k 永远为 0 0

你可能感兴趣的:(洛谷题解,动态规划,算法)