P r o b l e m \mathrm{Problem} Problem
题解
我们发现发现a,b和c是独立的。
因此我们单独考虑某一个字母,把能变成这个字母的数字都赋值为1即可。
现在问题转化成了求解最大全1矩阵。
对于每一个点求解能往左的/往右的,全部为1的最边上的距离。
For(i,1,n) {
For(j,1,m) if (b[i][j] and b[i][j-1]) l[i][j] = l[i][j-1];Forr(j,1,m) if (b[i][j] and b[i][j+1]) r[i][j] = r[i][j+1];}
然后我们枚举每一个点,得到能够向上的最大距离。用up[i][j]表示。
即,当 b [ i ] [ j ] = b [ i ] [ j ? 1 ] b[i][j]=b[i][j-1] b[i][j]=b[i][j?1]时同时转移: l [ i ] [ j ] = max ? ( l [ i ] [ j ] , l [ i ? 1 ] [ j ] ) r [ i ] [ j ] = max ? ( r [ i ] [ j