题解 区间DP之多维度复杂转移-luogu.P1220&P3205
题目
首先给出两个题目。
题意建模
题目都比较复杂,我们一个一个来分析。 按照笔者在DP概述这篇文章中所论述的那样,任何一类DP的问题,都可以采用我们这种最科学的方法去思考和理解,所以具体问题具体分析:
1.P1220
第一步肯定是定义状态,但首先得找到状态,所以就先去看一下。
理解一下题目大意:关灯不需要额外的时间,经过了灯就关了。但是可能折返回去关某一个大灯会比继续往下走关接下来的一个小灯更优,那么可以得到两种状态(沿着当前方向继续往下走,改变方向回去关灯)。既然得到了两种状态,就应该考虑之间的联系,也即如何去转移(思考状态转移方程)。但在这之前,首先得思考一下如何划分阶段:
划分的阶段依据来自于一种拓扑序,在这里找一找拓扑序:只考虑某一次和这一次前面一次的状态,很明显可以知道关了多少个路灯,所以可以将其作为阶段吗?
但是很明显,这是无法写出(准确来说是很难写出)状态转移方程的。但这时注意到,
某一村庄在一条路线上安装了 n 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。
这说明了什么?可以考虑将区间的大小作为阶段,正好也包括路灯的信息,这应该是正解了! 所以现在就可以考虑定义状态:
我们思考,朝一个方向走后,我们更新了什么状态呢?答案是左边待开的灯和右边待开的灯的编号,这是很直观的。我们考虑 代表区间

浙公网安备 33010602011771号