CF1772B Matrix Rotation

CF1772B Matrix Rotation

题目传送门

我们定义一个“优秀”的矩阵当他满足以下特点:

  • 在每行中,第一个元素总小于第二个元素。

  • 在每列中,第一个元素总小于第二个元素。

现在给你一个 2×22\times 2 的矩阵,每次可以旋转 9090^\circ,请问一直旋转,看是否有一种情况满足他是一个“优秀”得矩阵?

不难发现,旋转 360360^\circ这个矩阵就变得和原来一样了。因为他是 2×22\times 2 的,数据较小,我们可以对这个矩阵手动进行三次翻转,对于每一次翻转,也就是,我们把四个数依次拿出来,记为 a,b,c,da,b,c,d。旋转 9090^\circ,放在图中就是:

原来:[abcd]\begin{bmatrix}a&b\\c&d\end{bmatrix}

旋转 9090^\circ[cabd]\begin{bmatrix}c&a\\b&d\end{bmatrix}

按照上述方法进行旋转即可。

CodeCode

#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;
}
posted @   June_Failure  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示