思路:
1.行号唯一;
2.行号减列号唯一;
代码:
#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main(){
int k,n;
scanf("%d",&k);
for(int i=0;i<k;i++){
scanf("%d",&n);
map<int,int> mp;
vector<int> v(2*n);
int flag=1;
for(int j=1;j<=n;j++){
int row;
scanf("%d",&row);
if(mp[row]!=0) flag=0;
mp[row]=j;
}
for(auto e:mp){
if(v[e.first-e.second+n]!=0) flag=0;
else v[e.first-e.second+n]=1;
}
printf(flag==1?"YES
":"NO
");
}
return 0;
}