题意简述
一个 n × m n\times m n×m的矩阵,每个位置珂能是粉色(0表示)或者是蓝色(1表示),然后你珂以对同一行里连续一段长度的区间染上一种颜色(覆盖型),你能染 t t t次,每次不限长度。求你染到的正确的颜色的个数最多是多少。
思路框架
f [ i ] [ j ] f[i][j] f[i][j]表示前 i i i行染 j j j次最大染色个数。 g [ i ] [ j ] [ k ] g[i][j][k] g[i][j][k]表示第 i i i行染 j j j次只考虑前 k k k个格子最大方案。
具体思路
D P DP DP题分两步,设状态,求转移。
多数题目是状态不好设的。像这个题就是,我想了好久没想出来状态怎么设,看一下题解知道状态怎么设之后就是秒切。那么,我们这个题也是分两块来讲。
Part 1. 状态
首先 f f f是很好想的。答案就是 f [ n ] [ i ] ( i ∈ [ 1 , t ] ) f[n][i] (i\in [1,t]) f[n][i](i∈[1,t])中的最大值。
然后我们来求 f [ i ] [ j ] f[i][j] f[i][j]的转移。求着求着发现,我们先要枚举一个 k k k, k k k小于 j j j。转移的一部分就是 f [ n − 1 ] [ j − k ] f[n-1][j-k] f[n−1][j−k],就是上一行染 j − k j-k j−k次。还有