UOJ Logo sharpland的博客

博客

[P1181讨论帖] 【P1181解题讨论】新讨论

2020-06-09 15:02:26 By sharpland

显然调整到相邻高度最优

考虑dp,显然修改$a_i$时可直接转移

考虑滚动数组以降低空间复杂度,故设如下状态

设$f_{i,j,0}$表示已经建了j座房子,且最后一座在第$i-1$个位置之前的最小次数

$f_{i,j,1}$表示已经建了j座房子,且最后一座在第i个位置的最小次数

$f_{i,j,2}$表示已经建了j座房子,且最后一座在第$i-1$个位置的最小次数

则可得转移 $$ f_{i,j,0}=min(f_{i-1,j,0},f_{i - 1,j,2}) $$

$$ f_{i,j,1}=min(f_{i,j-1,0}+max(0,a_{i-1}-a_i+1),f_{i,j-1,2}+max(0,min(a_{i-1},a_{i-2}-a_i+1))) $$

$$ f_{i,j,2}=f_{i-1,j,1}+max(0,a_i-a_{i-1}+1) $$

注:$max(0,x)$表示如果差大于0则调整,否则无需调整

滚动数组转移即可,注意滚动数组后转移需注意实现细节

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。