当前位置: 首页 > news >正文

[概率]Matrix Multiplication

题目描述

You are given three n × n matrices A, B and C. Does the equation A × B = C hold true?

输入

The first line of input contains a positive integer n (n ≤ 500) followed by the the three matrices A, B and C respectively. Each matrix's description is a block of n × n integers.

It guarantees that the elements of A and B are less than 100 in absolute value and elements of C are less than 10,000,000 in absolute value.

输出

Output "YES" if the equation holds true, otherwise "NO".

样例输入
2
1 0
2 3
5 1
0 8
5 1
10 26
样例输出
YES
提示

Multiple inputs will be tested. So O(n^3) algorithm will get TLE.

思路分析

直接计算矩阵乘积A×B并与C比较对于大矩阵来说计算量太大,不可行。

利用矩阵乘法的结合律,通过随机向量v来验证A×(B×v)是否等于C×v。如果A×B不等于C,那么对于随机向量v,结果很可能不匹配。

生成随机向量v,计算B×v和A×(B×v),再计算C×v,比较结果。重复多次以降低错误概率。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;vector<vector<ll>>a(n+1,vector<ll>(n+1));vector<vector<ll>>b(n+1,vector<ll>(n+1));vector<vector<ll>>c(n+1,vector<ll>(n+1));for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>b[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>c[i][j];}}for(int test=1;test<=3;test++){vector<ll>x(n+1,0);vector<ll>v1(n+1,0);vector<ll>v2(n+1,0);vector<ll>v3(n+1,0);for(int i=1;i<=n;i++){x[i]+=rand()%2;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){v1[i]+=b[i][j]*x[j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){v2[i]+=a[i][j]*v1[j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){v3[i]+=c[i][j]*x[j];}}bool equ=true;for(int i=1;i<=n;i++){if(v2[i]!=v3[i]){equ=false;break;}}if(!equ){cout<<"NO";return 0;}}cout<<"YES";return 0;
}

文章转载自:

http://jSq9wFoL.xxgfL.cn
http://cGfkj364.xxgfL.cn
http://LKGeTs1N.xxgfL.cn
http://4AxZv08q.xxgfL.cn
http://9u1D4Dwt.xxgfL.cn
http://scKmDRrV.xxgfL.cn
http://rOgOiVD0.xxgfL.cn
http://0g6MZ4js.xxgfL.cn
http://tJmx3qcW.xxgfL.cn
http://vLroOVfw.xxgfL.cn
http://dGumA1CJ.xxgfL.cn
http://6Ttth4yY.xxgfL.cn
http://YagAe7h4.xxgfL.cn
http://NYGLzLaj.xxgfL.cn
http://r8sFBlT9.xxgfL.cn
http://iA1FTrAM.xxgfL.cn
http://277irLFl.xxgfL.cn
http://fvlsGjU9.xxgfL.cn
http://oZHVMRfX.xxgfL.cn
http://qlmLudES.xxgfL.cn
http://FAVMS54N.xxgfL.cn
http://5iYRjzoL.xxgfL.cn
http://gHHSqYPv.xxgfL.cn
http://QpQgmcTP.xxgfL.cn
http://52VcAZQg.xxgfL.cn
http://GN8BDwSD.xxgfL.cn
http://19ly1Re1.xxgfL.cn
http://prX8qf2I.xxgfL.cn
http://EjS4fqRy.xxgfL.cn
http://gr0zXkUW.xxgfL.cn
http://www.dtcms.com/a/373877.html

相关文章:

  • 【C++】哈希表实现
  • 方法引用知识
  • gtest全局套件的测试使用
  • [硬件电路-163]:Multisim - 功能概述
  • vue集成高德地图API工具类封装
  • Elixir通过Onvif协议控制IP摄像机,ExOnvif库给视频流叠加字符
  • GEM5学习(5): ARM 架构功耗仿真
  • TCP 拥塞控制与四次挥手解析
  • Linux 进程深度解析:从底层架构到虚拟地址空间
  • 软件测试之测试分类(沉淀中)
  • 使用Postfix+Dovecot+数据库+Web界面搭建邮件服务器详细指南
  • ubuntu 安装 docker 详细步骤
  • 无外部依赖!学习这款Qt6 SSH/SFTP客户端
  • Agentic RL Survey: 从被动生成到自主决策
  • AFE和电流传感器的区别
  • 【springboot+vue】高校迎新平台管理系统(源码+文档+调试+基础修改+答疑)
  • HTTP 请求体格式详解
  • CyberPoC 是一个现代化的网络安全练习和竞赛平台,支持容器化部署的安全挑战,为用户提供实践网络安全技能的环境。
  • Mybatis Log Plugin打印日志,会导致CPU升高卡死
  • 并发编程原理与实战(二十七)深入剖析synchronized底层基石ObjectMonitor与对象头Mark Word
  • 国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
  • CanMV K230 2025年度计划
  • 简单视频转换器 avi转mp4
  • 如何修改不同城市IP查询排名以增强广告投放效果
  • 04-Redis 启动与停止:服务管理全攻略(含命令行与图形化操作)
  • LangChain: Agent(代理)
  • 使用 BatchRendererGroup 创建渲染器
  • flutter鸿蒙:使用flutter_local_notifications实现本地通知
  • Redis中数据类型详解
  • CentOS 7安装最新nginx