DP。
设 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 个格子能正确粉刷的最大格子数,用前缀和数组记录蓝色格子数( s u m i , j sum_{i,j} sumi,j表示第 i i i 条木板到位置 j j j 有几个蓝格子),某个区间的格子数减蓝色格子数就是红色格子数。
求能正确粉刷的最大格子数,状态转移方程为: f ( i , j ) = max ( f ( i , j ) , f ( i − 1 , j − k ) + g ( i , k , M ) ) f(i,j)=\max(f(i,j),f(i-1,j-k)+g(i,k,M)) f(i,j)=max(f(i,