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 ,构造任意满足彼得要求的矩阵 b b b ,或者确定它是不可能的。
快点!否则,他会把所有的钱都捐给小溪来寻找问题的答案。
输入
每个测试由多个测试用例组成。第一行包含一个整数 t t t ( 1 ≤ t ≤ 1 0 3 1 \leq t \leq 10^3 1≤t≤103 )—测试用例的数量。然后是测试用例的描述。
每个测试用例的第一行包含两个整数 n n n 和 m m m ( 1 ≤ n , m ≤ 10 1 \leq n, m \leq 10 1≤n,m≤10 )——矩阵 a a a 的行数和列数。
接下来的 n n n 行每行包含 m m m 整数,描述矩阵 a a a 。这些行的第一行包含矩阵 a i , 1 , a i , 2 , … , a i , m a_{i, 1}, a_{i, 2}, \ldots, a_{i, m} ai,1,ai,2,…,ai,m 的元素。
保证矩阵 a a a 中所有的数都是不同的,并且 1 ≤ a i , j ≤ n ⋅ m 1 \leq a_{i, j} \leq n \cdot m 1≤ai,j≤n⋅m 。
保证所有测试用例的 n ⋅ m n \cdot m n⋅m 之和不超过 5 ⋅ 1 0 4 5 \cdot 10^4 5⋅104 。
输出
对于每个测试用例,输出 n ⋅ m n \cdot m n⋅m 整数—任何合适的矩阵 b b b ,如果不存在这样的矩阵,则输出 − 1 -1 −1 。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
const int N=20;
int mp[N][N];
void solve()
{int n,m;cin>>n>>m;int sum=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>mp[i][j];}}if(n*m==1)cout<<"-1\n"; // 特例输出else{if(m==1) // 一列数组{for(int i=0;i<n;i++){for(int j=0;j<m;j++){cout<<mp[(i+1)%n][j]<<' ';}cout<<'\n';}}else // 循环移动{for(int i=0;i<n;i++){for(int j=0;j<m;j++){cout<<mp[i][(j+1)%m]<<' ';}cout<<'\n';}}}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--)solve();return 0;
}
B. Fun Game
题目
Vova非常喜欢XOR操作(表示为 ⊕ \oplus ⊕ )。最近,当他要睡觉的时候,他想出了一个有趣的游戏。
在游戏开始时,Vova选择了两个长度为 n n n 的二进制序列 s s s 和 t t t 交给Vanya。二进制序列是由数字 0 0 0 和 1 1 1 组成的序列。Vanya可以选择整数 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 si 替换为 s i ⊕ s i − l + 1 s_i \oplus s_{i - l + 1} si⊕si−l+1 ,其中 s i s_i si 是序列 s s s 的第一个元素 i i i 。
为了让游戏变得有趣,必须存在获胜的可能性。如果Vanya以无限个数的动作,能够从序列 s s s 中获得序列 t t t ,则Vanya获胜。确定游戏是否对序列 s s s 和 t t t 感兴趣。
输入* * * *
每个测试由多个测试用例组成。第一行包含一个整数 q q q ( 1 ≤ q ≤ 1 0 4 1 \le q \le 10^{4} 1≤q≤104 )—测试用例的数量。然后是测试用例的描述。
每个测试用例的第一行包含一个整数 n n n ( 1 ≤ n ≤ 2 ⋅ 1 0 5 1 \leq n \leq 2 \cdot 10^5 1≤n≤2⋅105 )——序列 s s s 和 t t t 的长度。
每个测试用例的第二行包含一个长度为 n n n 的二进制序列 s s s 。
每个测试用例的第三行包含一个长度为 n n n 的二进制序列 t t t 。
保证所有测试用例的 n n n 之和不超过 2 ⋅ 1 0 5 2 \cdot 10^5 2⋅105 。
-
-
- *输出
-
对于每个测试用例,如果游戏有趣,则输出“Yes”,否则输出“No”。
您可以在任何情况下输出每个字母(例如,字符串“yEs”、“yEs”、“yEs”和“yEs”将被识别为肯定答案)。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
string s,t;
void solve()
{int n;cin>>n;s.clear();t.clear();cin>>s>>t;int f=0;int tt=0;for(int i=0;i<n;i++){if(s[i]=='1') f=1;if(s[i]!=t[i]&&f==0&&t[i]=='1')// 当 目标字符为 ‘1’ 时,变化字符为 ‘0’ ,如果在变化字符串该位置前无 ‘1’ 出现 则无法变化{tt=1;break;}}if(tt==0)cout<<"Yes";else cout<<"No";cout<<'\n';
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--)solve();return 0;
}