1. 题目链接
Kickstart Round C 2019 C. Catch Some
2. 题目描述
3. 解题思路
由题可知,除了最后一次需要走单程之外,其他每次都需要走双程(即需要回家)。
令 $dp_{(c,i,0)}$ 表示前 $c$ 种颜色,总共选出 $i$ 个人,并且前面 $c$ 种颜色 都是走的双程 的情况下的 最小花费时间;
$dp_{(c,i,1)}$ 表示前 $c$ 种颜色,总共选出 $i$ 个人,并且前面 $c$ 种颜色 存在一次走单程 的情况下的 最小花费时间。
记 $pos_{(c,i)}$ 表示第 $c$ 种颜色的狗中,距离家第 $i$ 近的狗的位置。
那么,可以写出状态转移方程如下:
$$
\begin{split}
dp_{(c,i+j,0)} &= \min \lbrace dp_{(c,j,0)} + 2 * pos_{(c,i)}\rbrace ;\
dp_{(c,i+j,1)} &= \min \lbrace dp_{(c,j,1)} + 2 * pos_{(c,i)},\ dp_{(c,j,0)} + pos_{(c,i)}\rbrace , \quad \text{for any } c,i,j.\
\end{split}
$$
因此, $ans=dp_{(M,K,1)}$。这里 $M$ 表示颜色种类数。
4. 参考代码
1 |
|