Time Limits: 5000 ms Memory Limits: 65536 KB Detailed Limits
Description
windy有 N 条木板需要被粉刷。
每条木板被分为 M 个格子。
每个格子要被刷成红色或蓝色。
windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。
每个格子最多只能被粉刷一次。
如果windy只能粉刷 T 次,他最多能正确粉刷多少格子?
一个格子如果未被粉刷或者被粉刷错颜色,就算错误粉刷。
Input
第一行包含三个整数,N M T。
接下来有N行,每行一个长度为M的字符串,'0'表示红色,'1'表示蓝色。
Output
输出一个整数,表示最多能正确粉刷的格子数。
Sample Input
3 6 3 111111 000000 001100
Sample Output
16
Data Constraint
Hint
100%的数据,满足 1 <= N,M <= 50 ; 0 <= T <= 2500 。
Source / Author: 四川2009省选第2试第2题
题解:
显然dp(虽然本蒟蒻没有想出来)。
f[i][j][k][s = 0/1/2]表示当前刷到第i行 第 j列 , 前面已经处理完且i行j列的涂色状态s , 0表示没涂 , 1表示涂0,2表示涂1 。
转移显然。
注意当前行做完要转移到下一行 。 (f[i][0][k][0] = max(f[i-1][m][k][1] / [2] / [0]))