A.Diverse Game(构造)
题意:
佩特看了谢尔盖的数据流,得出了一个矩阵 a a a,由 n n n行和 m m m列组成(第 i i i行和第 j j j列中的数字表示为 a i , j a_{i,j} ai,j),其中包含了从 1 1 1到 n ⋅ m n\cdot m n⋅m的所有整数。但是他并不喜欢这样的数字排列,现在他想出一个新的矩阵 b b b,由 n n n行和 m m m列组成,同样包含从 1 1 1到 n ⋅ m n\cdot m n⋅m的所有整数,这样对于任意的 1 ≤ i ≤ n , 1 ≤ j ≤ m 1\leq i\leq n,1\leq j\leq m 1≤i≤n,1≤j≤m来说, a i , j ≠ b i , j a_{i,j}\ne b_{i,j} ai,j=bi,j都成立。
给你一个矩阵 a a a,请构造出符合Petr要求的矩阵 b b b,或者确定这是不可能的。
分析:
题目要求构造一个大小为 n × m n\times m n×m且每个元素都与原排列不同的排列,直接让每个元素模 n × m n\times m n×m再加 1 1 1即可
代码:
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
int n, m;
void solve(){
scanf("%d%d", &n, &m);
if(n==1 and m==1){
scanf("%*d");
printf("-1\n");
return;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
int x;
scanf("%d",&x);
printf("%d%c", x % (n * m) + 1, " \n"[j == m]);
}
}
}
int main(){
int t;
scanf("%d",&t);
while(t--)
solve();
return 0;
}
B.Fun Game(异或)
题意:
沃瓦非常喜欢异或运算(表示为 ⊕ \oplus ⊕)。最近,他在睡觉时想出了一个有趣的游戏。
游戏开始时,沃瓦选择长度为 n n n的两个二进制数列 s s s和 t t t并把它们交给凡亚。二进制序列是仅由数字 0 0 0和 1 1 1组成的序列。凡亚可以选择整数 l , r l,r l,r这样的 1 ≤ l ≤ r ≤ n 1\leq l\leq r\leq n 1≤l≤r≤n,并同时将所有 l ≤ i ≤ r l\leq i\leq r l≤i≤r中的 s i s_i