题意:构造一个二维数组,使得任意一个4*4的子矩阵满足:
A11⊕A12⊕A21⊕A22=A33⊕A34⊕A43⊕A44
A13⊕A14⊕A23⊕A24=A31⊕A32⊕A41⊕A42
Solution(思路来源:知乎xioachou)
对于4个数来说,任意一个二进制位上的1和0都为偶数,此时他们异或一定为0
那么我们构造出第一行为0,1,2,...,m-1,剩下的每一个数都给上一行的数加上1<<10,最后一定满足条件
1 int a[205][205]; 2 void solve() 3 { 4 int n,m;cin>>n>>m; 5 cout<<n*m<<"\n"; 6 int cnt=1<<9; 7 a[1][1]=0; 8 a[1][2]=1; 9 for(int i=3;i<=200;i++) 10 { 11 a[1][i]=i-1; 12 } 13 for(int i=2;i<=200;i++) 14 { 15 for(int j=1;j<=200;j++) 16 { 17 a[i][j]=a[i-1][j]+cnt; 18 } 19 } 20 /*for(int i=1;i<n;i++) 21 { 22 for(int j=1;j<m;j++) 23 { 24 cout<<(((a[i][j]^a[i][j+1])^a[i+1][j])^a[i+1][j+1])<<" "; 25 } 26 cout<<"\n"; 27 }*/ 28 29 for(int i=1;i<=n;i++) 30 { 31 for(int j=1;j<=m;j++) 32 { 33 cout<<a[i][j]<<" "; 34 35 } 36 cout<<"\n"; 37 } 38 39 }
- Codeforces Beautiful Blanket C-The Roundcodeforces beautiful blanket c-the educational codeforces beautiful round codeforces beautiful round 905 codeforces beautiful 1904f tree 数据结构codeforces beautiful结构 educational codeforces round rated codeforces round 911 div codeforces round 864 div codeforces round 887 div codeforces round 863 div