涂色

这一道题目可以感觉到,如果没有覆盖全部区间的一次涂色,那么一定会有一个分界点

考虑覆盖编号为\(1\)的方块的最后一次\(极长\)操作,假设为\([1,r]\)(“极长”指不会缩短,也就是说最终的方案中,位置\(r\)不会被其他操作覆盖,也就是说位置$r4的最后一次操作也是覆盖位置\(1\)的最后一次操作;如果不是极长操作,我们最后一次覆盖位置\(1\)的操作就可以不用延伸到位置\(r\),不影响答案)且\(r<n\),此时如果存在某个操作,其左端点小于等于\(r\),右端点大于\(r\),我们只需要把这个操作的左端点变成\(r+1\)就好了,也就是说\(r\)就是分界点

因此如果不存在覆盖全部区间的一次涂色,我们像正常的操作一样枚举分段点就可以了

那么什么时候才会存在覆盖全部区间的一次涂色呢?此时一定有两端点的颜色相同(不然覆盖全部区间的一次涂色没有意义,完全可以缩短或者不要)

此时我们考虑区间\([l,r]\),其最优方案中,覆盖\(l\)这个点的最后一次操作一定是\(l\)的颜色,我们把这个操作放到最开始做,并且让这个操作的右端点变成\(r\),显然方案也是合理的,所以有\(f[l][r]=f[l][r-1]\)(当然注意此时换了顺序之后,这个操作可能要缩短一点,其他操作也可能要缩短一点,总之来说左端点附近就不要有重合了)

然而这道题目还可以像消木块那道题目一样考虑最后一段颜色相同的区间什么时候消去,枚举前面颜色相同的区间连起来即可

posted @ 2024-01-26 11:01  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报