题意简述
请你在一个黑白矩阵中选出一个长方形(含正方形)和正方形的子矩阵,使得所有相邻的点颜色不一样。
矩阵大小:两条边都 < = 2000 <=2000 <=2000
数据
输入
3 3
1 0 1
0 1 0
1 0 0
输出
4
6
解释
给定矩阵:
正方形:
长方形:
我的控制台是萌萌哒#ffc0cb粉色
一个小技巧:如果您的控制台是像我的这样能选择的,那么只要按着ALT就可以只选出矩形部分了。
效果图:
思路
悬线DP。我们用 L [ i ] [ j ] , R [ i ] [ j ] L[i][j],R[i][j] L[i][j],R[i][j]分别表示向左,右最远珂以延伸(延伸的条件就是黑白相间)到同一行第几个点。 U [ i ] [ j ] U[i][j] U[i][j]表示向上延伸(延伸条件同上)的最大长度。(这是悬线DP的套路)
然后转移方程很好写。用 m p mp mp记录矩阵,枚举 i , j i,j i,j, L , R L,R L,R的初始值是 j j j, U U U的初始值是1.若 m p [ i ] [ j − 1 ] ! = m p [ i ]