xtuoj 矩阵

题目

思路

要解决这道题,核心是找到操作的本质规律------ 先分析 "相邻元素加减" 操作对矩阵的影响,再推导判断条件。

步骤 1:理解操作的本质

题目中 "相邻元素加减" 的操作(比如对 a[i][j]a[i][j+1],同时 + 1 或 - 1),其实等价于:对矩阵中任意两个相邻元素,同时增加 / 减少同一个数

观察这个操作对矩阵的影响:假设对元素 xy 同时加 k,那么整个矩阵的元素总和变化量k + k = 2k(即总和的变化是偶数)。

但更关键的是:矩阵中所有元素的 "奇偶性组合" 具有特定的不变性

步骤 2:推导不变性(关键结论)

我们给矩阵的元素按 "棋盘格" 方式染色:

  • A[i][j] 分为两类:(i+j) 是偶数的元素(记为 "黑格"),(i+j) 是奇数的元素(记为 "白格")。

此时,"相邻元素加减" 操作的对象,必然是一个黑格和一个白格 (因为相邻元素的 i+j 奇偶性不同)。

对这两个元素同时加 / 减 k,会导致:

  • 黑格的总和变化 ±k
  • 白格的总和变化 ±k
  • 因此,黑格总和 与 白格总和的差值 不变 (因为 (黑+Δk) - (白+Δk) = 黑-白)。

步骤 3:判断条件

要将矩阵 A 转化为 B,需要满足:对 AB 分别计算 黑格总和 - 白格总和,这两个差值必须相等。

验证题目中的示例

以题目中的 AB 为例:

  • A 的黑格(i+j 偶):A[0][0]=1A[0][2](无)、A[1][1]=4 → 黑总和 = 1+4=5;白格(i+j 奇):A[0][1]=2A[1][0]=3 → 白总和 = 2+3=5;差值:5-5=0。

  • B 的所有元素都是 0 → 黑总和 = 0,白总和 = 0 → 差值 = 0-0=0。

两者差值相等,所以可以转化(与题目示例结果一致)。

解题步骤

对每个测试用例:

  1. 分别计算矩阵 A黑格总和 - 白格总和 (记为 diffA);
  2. 分别计算矩阵 B黑格总和 - 白格总和 (记为 diffB);
  3. diffA == diffB,输出 Yes;否则输出 No

代码

cpp 复制代码
#include <stdio.h>

int main() {
	int T;
	scanf("%d", &T);
	while (T--) {
		int n, m;
		scanf("%d%d", &n, &m);
		
		// 计算矩阵A的diff
		long long diffA = 0;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				long long x;
				scanf("%lld", &x);
				if ((i + j) % 2 == 0) {
					diffA += x;
				} else {
					diffA -= x;
				}
			}
		}
		
		// 计算矩阵B的diff
		long long diffB = 0;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				long long x;
				scanf("%lld", &x);
				if ((i + j) % 2 == 0) {
					diffB += x;
				} else {
					diffB -= x;
				}
			}
		}
		
		// 判断
		if (diffA == diffB) {
			printf("Yes\n");
		} else {
			printf("No\n");
		}
	}
	return 0;
}
相关推荐
3GPP仿真实验室2 小时前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
Σίσυφος19002 小时前
PCL 法向量估计-PCA邻域点(经典 kNN 协方差)的协方差矩阵
人工智能·线性代数·矩阵
_OP_CHEN14 小时前
【算法基础篇】(五十七)线性代数之矩阵乘法从入门到实战:手撕模板 + 真题详解
线性代数·算法·矩阵·蓝桥杯·c/c++·矩阵乘法·acm/icpc
芷栀夏15 小时前
CANN ops-math:从矩阵运算到数值计算的全维度硬件适配与效率提升实践
人工智能·神经网络·线性代数·矩阵·cann
种时光的人1 天前
CANN仓库核心解读:catlass夯实AIGC大模型矩阵计算的算力基石
线性代数·矩阵·aigc
Zfox_1 天前
CANN Catlass 算子模板库深度解析:高性能矩阵乘(GEMM)原理、融合优化与模板化开发实践
线性代数·矩阵
lbb 小魔仙1 天前
面向 NPU 的高性能矩阵乘法:CANN ops-nn 算子库架构与优化技术
线性代数·矩阵·架构
空白诗1 天前
CANN ops-nn 算子解读:大语言模型推理中的 MatMul 矩阵乘实现
人工智能·语言模型·矩阵
劈星斩月1 天前
线性代数-3Blue1Brown《线性代数的本质》特征向量与特征值(12)
线性代数·特征值·特征向量·特征方程
池央2 天前
ops-nn 算子库中的数据布局与混合精度策略:卷积、矩阵乘法与 RNN 的优化实践
rnn·线性代数·矩阵