Problem - 1955B - Codeforces
思路
因为b数组的顺序是乱的,所以要进行排序后,比较正确数组跟b数组是否一致
ac代码
#include<bits/stdc++.h>
typedef long long ll;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
int main()
{
IOS;
int T;
cin>>T;
while(T--)
{
ll n,c,d;
cin>>n>>c>>d;
vector<ll> b(n*n);
for(int i=0;i<n*n;i++) cin>>b[i];
sort(b.begin(),b.end());
vector<ll> p(n*n);
p[0]=b[0];
for(int i=1;i<n;i++) p[i]=p[i-1]+c;
for(int i=1;i<n;i++)
{
for(int j=0;j<n;j++)
{
p[i*n+j] = p[(i-1)*n+j]+d;
}
}
sort(p.begin(),p.end());
if(b==p) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
注意
因为b.begin() , b.end(),所以下标从0开始