题意
构造一个n×m的矩阵A,且1≤Ai,j≤25,使得不存在点对(x1,x2,y1,y2)使得Ax1,y1,Ax1,y2,Ax2,y1,Ax2,y2不全相等,换言之一个矩形边框四个角不全相等。
1≤n,m≤500
Solution
是个结论题~:
结论
Ai,j=(⌊23i⌋⌊23j⌋+i+j) mod 23+1
考虑构造P×P矩阵Bk,填入[1,P],其中P是一个质数,k是一个给定整数。
那么我们可以这样构建:
Bi,j=(i+j+k) mod p+1
我们尝试用P×P个这样的矩阵构造一个P2×P2的矩阵:
设Ai,j表示该位置的矩阵是Bk,有:
k=(i×j) mod P
例如P=3的时候,矩阵如下:
A=⎝⎛B0B0B0B0B1B2B0B2B1⎠⎞
现在证明正确性:
- 对于i1=i2或j1=j2并且相邻,即同行或同列且相邻:
因为Bk中每一行每一列数字都不相同,在最多只填P个矩阵的前提下,可以保证不会出现k相同的矩阵
- 四个矩阵,构成一个大正方形
考虑四个矩阵坐标为(i,j),(i+1,j),(i,j+1),(i+1,j+1)
则k1=ij mod p,k2=ij+j mod p,k3=ij+i mod p,k4=ij+i+j+1 mod p
令ij=k
若k1=k2=k3,则可以得出j=n1k,i=n2k。
k4=(n1+n2)k+1 mod p=k
类似情况同理。