CF1772B Matrix Rotation
CF1772B Matrix Rotation
我们定义一个“优秀”的矩阵当他满足以下特点:
-
在每行中,第一个元素总小于第二个元素。
-
在每列中,第一个元素总小于第二个元素。
现在给你一个 的矩阵,每次可以旋转 ,请问一直旋转,看是否有一种情况满足他是一个“优秀”得矩阵?
不难发现,旋转 这个矩阵就变得和原来一样了。因为他是 的,数据较小,我们可以对这个矩阵手动进行三次翻转,对于每一次翻转,也就是,我们把四个数依次拿出来,记为 。旋转 ,放在图中就是:
原来:。
旋转 :。
按照上述方法进行旋转即可。
:
#include<bits/stdc++.h>
using namespace std;
const int N =300;
int a[N][N];
bool check()
{
if(((a[1][1]<a[1][2])&&(a[2][1]<a[2][2]))&&((a[1][1]<a[2][1])&&(a[1][2]<a[2][2])))
return true;
else
return false;
}
void Slove()
{
int x1=a[1][1],x2=a[1][2],x3=a[2][1],x4=a[2][2];
a[1][2]=x1,a[1][1]=x3,a[2][1]=x4,a[2][2]=x2;
}
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int t;
cin>>t;
while(t--)
{
cin>>a[1][1]>>a[1][2]>>a[2][1]>>a[2][2];
if(check())
{
cout<<"YES"<<endl;
continue;
}
Slove();
if(check())
{
cout<<"YES"<<endl;
continue;
}
Slove();
if(check())
{
cout<<"YES"<<endl;
continue;
}
Slove();
if(check())
{
cout<<"YES"<<endl;
continue;
}
cout<<"NO"<<endl;
}
return 0;
}

浙公网安备 33010602011771号