T6 午枫的陪伴时间
题目大意
有 nnn 个开始陪伴的时间,每次陪伴必续连续陪 ttt 天,期间不能进行别的陪伴的任务,如果陪伴需要花费 costcostcost 元,否则需要花费 valvalval 元,求最少花费。
解题思路
首先我们可以考虑按照 aia_iai 从小到大排序,然后考虑通过DP如何解决。
设 dpi,0dp_{i,0}dpi,0 表示前 iii 个选项,其中没选第 iii 项的最小花费; dpi,1dp_{i,1}dpi,1 表示前 iii 个选项,其中选择了第 iii 项的最小花费。
其中 dpi,0dp_{i,0}dpi,0 的状态转移很简单: dpi,0=min(dpi−1,0,dpi−1,1)+vidp_{i,0}=min(dp_{i-1,0},dp_{i-1,1})+v_idpi,0 =min(dpi−1,0 ,dpi−1,1 )+vi 。
令 sis_isi 为 viv_ivi 的前缀和,pospospos 为 iii 左侧第一个小于 ai−ma_i-mai −m 的下标。那么 dpi,1dp_{i,1}dpi,1 的状态转移为:dpi,1=min(dppos,0,dppos,1)+si−1−spos+costidp_{i,1}=min(dp_{pos,0},dp_{pos,1})+s_{i-1}-s_{pos}+cost_idpi,1 =min(dppos,0 ,dppos,1 )+si−1 −spos +costi
最后答案取 dpi,0dp_{i,0}dpi,0 和 dpi,1dp_{i,1}dpi,1 的最小值即可。
参考代码