P10102 [GDKOI2023 提高组] 矩阵

模拟赛题,场切了,似乎做法和全世界都不一样。

直接暴力矩阵乘法显然过不去,也没有什么前途。注意到只需要判定是否相等,考虑矩阵每一行的和。假设现在正在计算第 \(i\) 项的和。

\[\sum_{j=1}^n \sum_{k=1}^n A_{i,k}B_{k,j}
\]

交换枚举顺序,不难得到如下式子。

\[\sum_{k=1}^n A_{i,k}\sum_{j=1}^n B_{k,j}
\]

我们发现,\(\sum_{j=1}^n B_{k,j}\) 其实就是 \(B\) 中第 \(k\) 行的数的和,预处理之后每一行就只需要枚举 \(k\) 就可以计算。总时间复杂度就达到了 \(O(n^2)\)。

我们判断算出来每行的和与 \(C\) 中每行的和是否相等即可。但是由于取模,有可能会出现冲突,所以我们再把每一列都判断一下。可以类比哈希,这么做出错概率极低。

#include <bits/stdc++.h>
using namespace std;
long long t,n,a[3001][3001],b[3001][3001],c[3001][3001],ha[3001],hb[3001],hc[3001],la[3001],lb[3001],lc[3001];
const long long mod=998244353;
inline long long read()
{
long long x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
} int main()
{
scanf("%lld",&t);
while(t--)
{
n=read();
for(int i=1;i<=n;i++)ha[i]=hb[i]=hc[i]=la[i]=lb[i]=lc[i]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=read(),ha[i]=(ha[i]+a[i][j])%mod,la[j]=(la[j]+a[i][j])%mod;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
b[i][j]=read(),hb[i]=(hb[i]+b[i][j])%mod,lb[j]=(lb[j]+b[i][j])%mod;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[i][j]=read(),hc[i]=(hc[i]+c[i][j])%mod,lc[j]=(lc[j]+c[i][j])%mod;
bool flag=0;
for(int i=1;i<=n;i++)
{
long long sum=0;
for(int k=1;k<=n;k++)sum=(sum+a[i][k]*hb[k]%mod)%mod;
if(sum!=hc[i])
{
flag=1;
break;
}
}
if(!flag)
for(int i=1;i<=n;i++)
{
long long sum=0;
for(int k=1;k<=n;k++)sum=(sum+b[k][i]*la[k]%mod)%mod;
if(sum!=lc[i])
{
flag=1;
break;
}
}
if(flag)printf("No\n");
else printf("Yes\n");
}
return 0;
}

Luogu P10102 [GDKOI2023 提高组] 矩阵 题解的更多相关文章

  1. 【题解】NOIP2017 提高组 简要题解

    [题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...

  2. 【题解】NOIP2016 提高组 简要题解

    [题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...

  3. Luogu P1314 [NOIP2011 提高组] 聪明的质监员

    P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 ...

  4. 题解 【luogu P1541 NOIp提高组2010 乌龟棋】

    题目链接 题解 题意: 有一些格子,每个格子有一定分数. 给你四种卡片,每次可以使用卡片来前进1或2或3或4个格子并拾取格子上的分数 每张卡片有数量限制.求最大分数. 分析 设\(dp[i]\)为第前 ...

  5. 题解 【luogu P2680 NOIp提高组2015 运输计划】

    题目链接 题解 题意 一棵树上有\(m\)条路径,可以将其中一条边的权值改为0,问最长的路径最短是多少 分析 最短的路径最长自然想到二分最长路径,设其为\(dis\) 关键在于如何check chec ...

  6. NOIP2017提高组day2T1题解(奶酪)

    题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...

  7. Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学

    题目链接 思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了. #include<iostream> #include<cstdio> #i ...

  8. Luogu P1850 [NOIp2016提高组]换教室 | 期望dp

    题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+--+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地 ...

  9. P1005 [NOIP2007 提高组] 矩阵取数游戏

    题目传送门 前言 今天依旧是不写高精的一天呢!(是的,这位作者又只拿了开 \(LL\) 的 \(\color{yellow}{60}\) 分) 思路描述 看到数据 \(n,m \le 80(30)\) ...

  10. nowcoder提高组2题解

    T1 化一下试子就ok code #include<cstdio> #include<algorithm> inline long long read() { long lon ...

随机推荐

  1. ESP32+Arduino入门教程(二):连接OLED屏

    前言 文中视频效果可在此次观看:ESP32+Arduino入门教程(二):连接OLED屏 接线 现在先来看看接线. 我的是0.91寸的4针OLED屏. OLED引脚 ESP32-S3引脚 GND GN ...

  2. 什么是 MySQL 的主从同步机制?它是如何实现的?

    什么是 MySQL 的主从同步机制?它是如何实现的? MySQL 的主从同步机制是一种将主数据库(Master)上的数据实时或接近实时地同步到从数据库(Slave)的机制.通过这种机制,从数据库可以获 ...

  3. DPDI(Dispatch PDI)kettle调度管理平台基础版安装部署说明

    DispatchPDI下载 DPDI online部署包下载地址: Windows: http://files.pizzalord.site/api/public/dl/7Tnq6ScE/releas ...

  4. Windows 身份验证协议

    本文中的图文内容均取自<域渗透攻防指南>,本人仅对感兴趣的内容做了汇总及附注. 导航 0 前言 1 NTLM 协议 1.1 控制台 1.2 工作组环境 1.3 域环境 1.4 NTLM 协 ...

  5. EFCore Study(3)——“一”对多关系的设定和插入、查找级联操作

    一.建立文章.评论类 /// <summary> /// 文章 /// </summary> public class Artitle { public int Id { ge ...

  6. 细节解析 JavaScript 中 bind 函数的模拟实现

    大家的阅读是我发帖的动力,本文首发于我的博客:deerblog.gu-nami.com/,欢迎大家来玩,转载请注明出处喵. 前言 bind是一个改变函数this指针指向的一个常用函数,经常用在涉及th ...

  7. 架构哲学与游戏工业化:策划x程序x抽象x复用x易用=降本增效

    (一)前言 策划 x 程序 x 抽象 x 复用 x 易用 = 降本增效 公式为什么是乘法而不是加法? 如果是加法,任何一个维度的数据为0时结果可能还是正数:如果是乘法,任何一个维度数据都不能为0否则结 ...

  8. Django踩坑之在Django中创建项目时ImportError: No module named django.core

    不使用django-admin.py,而是使用django-admin.exe 具体操作如下 django-admin.exe startproject learning_log . ok,没有提示错 ...

  9. Django 中URL和Views相关知识梳理(极简版)

    提示:仅供梳理参考,很多相关的细节内容忽略. 1.URL  (1)URL匹配的规则是正则,关于正则不再赘述. (2)URL优先级顺序:从urlpatterns的底部开始搜索,一直往上搜索,需要注意的是 ...

  10. 第三届LitCTFmisc详解

    Misc Cropping 随波逐流伪加密,得到一堆图片,把图片拼接起来 脚本 import os from PIL import Image def stitch_tiles_horizontall ...