CF1927G 题解
__vector__ · · 题解
距离上次赛时 AC 提交被 hack 过去了近 1.5 年,写篇题解纪念一下。分类讨论漏了一种情况都能过 pretests,难怪最终只过了这么点人。
在此感谢 160cm 对我赛时代码的 hack 数据,帮我找出我的错误。
大概思路
相信很多人读完题就能想到用 dp。
由于有
那么转移则从
这里有一个致命的问题,因为即使是最优方案下解决前
另外,是否可以将状态更改为
另外如果有大佬设计了一维状态的 dp,请评论区回复。
最后,我设计的状态是
转移方法(以下方程默认等于号的实际作用是 checkmin):
- 第
i 个向左涂:dp_{i,\max(y,i)} = \min(dp_{k,y})$,注意 $k \lt i,y \ge i-a_i - 第
i 个向右涂:dp_{i,\max(y,\min(n,i+a_i-1))} = \min(dp_{k,y})$,注意 $k \lt i,y \ge i-1 - 第
i 个不涂:dp_{i,y} = \min(dp_{k,y})$,注意 $k \lt i,y \ge i
还有一种特殊情况,在样例的 testcase11 中可以看见。
这种情况就是
此时好像可以结束了?
如果你是这场比赛的选手,并且是 rated,那么这将是一个沉痛的教训(对不起我赛前临时改成了 unrated),因为这里漏掉了一种 pretests 中没有出现的情况。
注意,对于当前需要求解的
最后我的解决方案。