atcoder arc140E-Not Equal Rectangle

题意

构造一个n×mn \times m的矩阵AA,且1Ai,j251 \leq A_{i,j} \leq 25,使得不存在点对(x1,x2,y1,y2)(x_1,x_2,y_1,y_2)使得Ax1,y1,Ax1,y2,Ax2,y1,Ax2,y2A_{x_1,y_1},A_{x_1,y_2},A_{x_2,y_1},A_{x_2,y_2}不全相等,换言之一个矩形边框四个角不全相等。

1n,m5001 \leq n,m \leq 500

Solution

是个结论题~:

结论

Ai,j=(i23j23+i+j) mod 23+1A_{i,j}=(\lfloor\frac{i}{23}\rfloor\lfloor\frac{j}{23}\rfloor+i+j)~ mod ~ 23+1

考虑构造P×PP \times P矩阵BkB_k,填入[1,P][1,P],其中PP是一个质数,kk是一个给定整数。

那么我们可以这样构建:

Bi,j=(i+j+k) mod p+1B_{i,j}=(i+j+k)~mod~p+1

我们尝试用P×PP \times P个这样的矩阵构造一个P2×P2P^2 \times P^2的矩阵:

Ai,jA_{i,j}表示该位置的矩阵是BkB_k,有:

k=(i×j) mod Pk=(i \times j)~mod~P

例如P=3P=3的时候,矩阵如下:

A=(B0B0B0B0B1B2B0B2B1)A=\begin{pmatrix} B_0&B_0&B_0\\ B_0&B_1&B_2\\ B_0&B_2&B_1\\ \end{pmatrix}

现在证明正确性:

  1. 对于i1=i2i_1=i_2j1=j2j_1=j_2并且相邻,即同行或同列且相邻:

因为BkB_k中每一行每一列数字都不相同,在最多只填PP个矩阵的前提下,可以保证不会出现kk相同的矩阵

  1. 四个矩阵,构成一个大正方形

考虑四个矩阵坐标为(i,j),(i+1,j),(i,j+1),(i+1,j+1)(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 pk_1=ij~mod~p,k2=ij+j~mod~p,k3=ij+i~mod~p,k4=ij+i+j+1~mod~p

ij=kij=k

k1=k2=k3k_1=k_2=k_3,则可以得出j=n1k,i=n2kj=n_1k,i=n_2k

k4=(n1+n2)k+1 mod pkk_4=(n_1+n_2)k+1~mod~p \not ={k}

类似情况同理。

Author: cjh-hhz
Link: https://cjh-hhz.github.io/05d4a88b63ff.html/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.