codeforces round.906 - E - Mirror Grid (数学,坐标变换)

You are given a square grid with n rows and n columns. Each cell contains either 0 0 0 or 1 1 1.

In an operation, you can select a cell of the grid and flip it (from 0 → 1 0→1 01 or 1 → 0 1→0 10). Find the minimum number of operations you need to obtain a square that remains the same when rotated 0 ∘ , 90 ∘ , 180 ∘ 0∘, 90∘, 180∘ 0,90,180 and 270 ∘ 270∘ 270.

The picture below shows an example of all rotations of a grid.
在这里插入图片描述

Input

The first line contains a single integer t t t ( 1 ≤ t ≤ 100 ) (1≤t≤100) (1t100) — the number of test cases.

The first line of each test case contains a single integer n n n ( 1 ≤ n ≤ 100 ) (1≤n≤100) (1n100) — the size of the grid.

Then n n n lines follow, each with n n n characters a i , j a_{i,j} ai,j ( 0 ≤ a i , j ≤ 1 ) (0≤a_{i,j}≤1) (0ai,j1) — the number written in each cell.

Output

For each test case output a single integer — the minimum number of operations needed to make the square look the same rotated 0 ∘ , 90 ∘ , 180 ∘ a n d 270 ∘ 0∘, 90∘, 180∘ and 270∘ 0,90,180and270.

Sample 1

Input

5
3
010
110
010
1
0
5
11100
11011
01011
10011
11000
5
01000
10101
01010
00010
01001
5
11001
00000
11111
10110
01111

Output

1
0
9
7
6

首先:这题不是找规律的题,如果要满足怎么转都是一样的,这个图形就要满足中心对称,如果要满足中心对称就要满足向以下图形一样:
在这里插入图片描述
首先绿色方块中的每个点转到其他任何方块对应的点都应该是相同的,只有满足了这个规律才能够成为中心对称图形,而中心对称图形在行列数为奇数和偶数的时候是不同的。

如果在绿色区域内的点的坐标为(x,y),那么转到其他三个区域对应的点分别是: ( y , n − x − 1 ) , ( n − x + 1 , n − y + 1 ) , ( n − y + 1 , x ) (y,n - x - 1) , (n - x + 1,n - y + 1) , (n - y + 1,x) (y,nx1),(nx+1,ny+1),(ny+1,x)

由于只有0和1,所以只要求出来这四个点的加和,如果为 1 1 1 或者 3 3 3,那么就是有 1 1 1 1 1 1 或者 1 1 1 0 0 0,那么这种情况只需要改变一个值,那么就让答案加 1 1 1,如果是 0 , 4 0,4 0,4,那就不用改变,如果为 2 2 2,那就要改变两次。

代码:

#include<iostream>
using namespace std;
const int N = 110;

int g[N][N];
int n;

int main() {
	int t; cin >> t;
	while (t--) {
		cin >> n;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				char c; cin >> c;
				g[i][j] = c - '0';
			}
		}

		int res = 0;

		if (n & 1) {
			for (int i = 1; i <= n / 2; i++) {
				for (int j = 1; j <= n / 2 + 1; j++) {
					int x1 = j, y1 = n - i + 1;
					int x2 = n - i + 1, y2 = n - j + 1;
					int x3 = n - j + 1, y3 = i;

					int sum = g[i][j] + g[x1][y1] + g[x2][y2] + g[x3][y3];
					if (sum == 1 || sum == 3)res += 1;
					if (sum == 2)res += 2;
				}
			}
		}
		else {
			for (int i = 1; i <= n / 2; i++) {
				for (int j = 1; j <= n / 2; j++) {
					int x1 = j, y1 = n - i + 1;
					int x2 = n - i + 1, y2 = n - j + 1;
					int x3 = n - j + 1, y3 = i;

					int sum = g[i][j] + g[x1][y1] + g[x2][y2] + g[x3][y3];
					if (sum == 1 || sum == 3)res += 1;
					if (sum == 2)res += 2;
				}
			}
		}
		cout << res << endl;
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490751.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TSINGSEE青犀智慧充电桩消防安全烟雾火焰AI算法识别预警方案

一、方案背景 随着AI人工智能、大数据、云计算等技术快速发展与落地&#xff0c;视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理&#xff0c;提高运营效率&#xff0c;保障充电站设备的安全和稳定运行。 通过TSINGS…

第四百二十六回

文章目录 1. 概念介绍2. 实现方法2.1 原生方式2.1 插件方式 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何修改程序的桌面图标"相关的内容&#xff0c;本章回中将介绍如何处理ListView中的事件冲突.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介…

Web APIs知识点讲解(阶段三)

DOM- 节点操作 一.节点操作 1.DOM节点 目标&#xff1a;能说出DOM节点的类型 DOM节点 DOM树里每一个内容都称之为节点 节点类型 元素节点 所有的标签 比如 body、 div html 是根节点 属性节点 所有的属性 比如 href 文本节点 所有的文本 document树&#xff1a; 总结&…

你敢信?苹果iPhone 16将搭载百度AI文心一言

【行业焦点】苹果公司&#xff0c;这位全球消费电子舞台的常青树&#xff0c;近期传出一则震撼业界的消息&#xff1a;其将在新一代iPhone 16系列中国版产品中&#xff0c;深度融合百度的尖端生成式AI技术。这一重大决策不仅揭示了苹果对中国市场的深度耕耘与本地化创新战略&am…

Java Web-Maven

Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具 Maven的作用 1.依赖管理:方便快捷的管理项目依赖资源(jar包)&#xff0c;避免版本冲突问题 我们有的项目需要大量的jar包&#xff0c;采用手动导包的方式非常繁琐&#xff0c;并且版本升级也…

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题&#xff0c;kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…

外贸企业如何访问外网?

在当今全球化的浪潮下&#xff0c;企业对于稳定、高效的网络连接需求日益迫切。无论是在境内还是境外&#xff0c;企业都需要依托可靠的网络基础设施&#xff0c;以确保业务的顺畅进行。在这样的背景下&#xff0c;我们提供的专业网络运营服务成为了众多企业的首选。 1. 网络建…

neo4j使用详解(三、cypher插入语法——最全参考)

1.插入语法 create, merge, set, delete, remove, create unique, load csv(import) 除插入语法外另外的语法详情请博主其他文章&#xff1a; 查询语法 其他语法 1.1.create语法 创建单个节点: create(n) # (ID:n) 创建带标签的节点: create (n:Person) # (ID:n, label:Perso…

垃圾回收:垃圾回收器

目录 垃圾回收器 评估GC的性能指标 7种典型的垃圾回收器 Serial回收器&#xff1a;串行回收 ParNew回收器&#xff1a;并行回收 Parallel回收器&#xff1a;吞吐量优先 CMS回收器&#xff1a;低延迟 G1回收器&#xff1a;区域化分代式 G1回收过程1-年轻代GC G1回收过程…

人、机中的幻觉和直觉

对于人类而言&#xff0c;幻觉和直觉是两种不同的心理现象。幻觉是一种错误的感知或体验&#xff0c;而直觉是一种在没有明显依据的情况下产生的直观认知。这两种概念在心理学和认知科学中具有不同的意义和研究对象。 人类幻觉是指个体在感知或体验上出现的错误&#xff0c;即看…

攻防世界-baby_web

题目信息 相关知识 使用bp进行抓包 解题过程 题目界面如下所示: 试图找index界面&#xff1a; 发现又跳转到http://61.147.171.105:51201/1.php页面&#xff0c;因此说明61.147.171.105:51201/index.php是存在的&#xff08;因为笔者试了&#xff0c;不存在的页面会直接报…

SHAP和LIME:Python机器学习模型解释

SHAP和LIME&#xff1a;Python机器学习模型解释 为了更好地展示&#xff0c;示例代码参见和鲸社区&#xff0c;一键运行 简介 机器学习模型在各个领域得到广泛应用&#xff0c;但其黑盒性质往往使人难以理解其决策过程&#xff0c;降低了模型的可信度和可靠性。为了解决这一…

ROM-IP

1.原理 通过添加数据文件&#xff0c;使ROM看起来不是易失性存储器&#xff0c; 产生256个数据&#xff0c;每个数据的位宽是8 如果前面为x&#xff0c;后面就是x256-1 2.单端口ROM配置 FPGA内部没有非易失性存储器。调用的ROM和RAM都是用RAM来生成的 3.双端口ROM配置 使用第一…

React系列之虚拟DOM、FIBER和DIFF算法

文章目录 虚拟 DOM 和 DIFF 算法虚拟DOM虚拟DOM对象虚拟DOM的优势预防XSS DIFF算法旧的DIFF算法Fiber树渲染过程算法过程key 的作用 虚拟 DOM 和 DIFF 算法 虚拟DOM React使用虚拟DOM来更新真正的DOM。 DOM表示“文档对象模型”&#xff0c;浏览器遵循HTML指令来构造文档对象…

Temu api接口 获取商品详情 数据采集

iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Temu电商数据采集API&#xff0c;供用户按需调用。 接口使用详情请参考Temu接口文档 接口列表 1. 获取商品详情 参数类型是否必填默认值示例值描述apikeystring是idr_***从控制台里复制apikeycountrystrin…

一文看懂什么是OpenHarmony流转架构

随着全场景多设备的生活方式不断深入&#xff0c;用户拥有的设备越来越多&#xff0c;不同设备都能在适合的场景下提供良好的体验&#xff0c;例如手表可以提供及时的信息查看能力&#xff0c;电视可以带来沉浸的观影体验。但是&#xff0c;每个设备也有使用场景的局限&#xf…

四川思维跳动商务信息咨询有限公司抖音电商的领航者

在数字化浪潮席卷全球的今天&#xff0c;电商行业正以其独特的魅力改变着传统的商业模式。作为这一变革的先锋力量&#xff0c;四川思维跳动商务信息咨询有限公司&#xff08;以下简称“思维跳动”&#xff09;凭借其深厚的行业经验和创新思维&#xff0c;专注于抖音电商服务&a…

如何保障MySQL和Redis的数据一致性?

在满足实时性的条件下&#xff0c;不存在两者完全保存一致的方案&#xff0c;只有最终一致性方案。 根据网上的众多解决方案&#xff0c;总结出 6 种&#xff0c;直接看目录&#xff1a; 不好的方案 1. 先写 MySQL&#xff0c;再写 Redis 图解说明&#xff1a; 这是一副时序图…

C++ STL - vector使用详解

目录 0.引言 1.构造函数 2. 赋值函数 3. vector 容量与大小 4. vector 插入和删除 5. vector 元素访问与更改 6. vector 互换 9. vector 预留空间 0.引言 这篇博客将详细介绍 vector&#xff0c;由于总体上与上一篇介绍的 string 类似&#xff0c;在此处注意展示其…

【Python】Data Science with Python 数据科学(1)环境搭建

一、操作系统 使用运行在Windows11主机上的Ubuntu 22.04虚拟机&#xff0c;虚拟化平台为Oracle VM VirtualBox。 二、PyCharm安装 有关PyCharm的安装和快捷方式创建&#xff0c;可分别参考我的博客 Ubuntu安装PyCharm、Ubuntu创建桌面快捷方式 &#xff0c;以及Ubuntu创建桌…