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

P2222 [HNOI2001] 矩阵乘积 题解

题目传送锚点

在博客园食用更佳

前言

对这篇题解有问题或认为这篇题解没写好的同学请先评论或私信我,不要直接举报啊,专栏已经因此封过一次了,不想再被封了,谢谢。

题意

给你三个合法的矩阵 \(A,B,C\),将它们相乘得到矩阵 \(D\),求 \(d_{x,y}\) 的值。

思路

首先这道题要用到矩阵乘法,所以没学过矩阵乘法的同学请出门右转,慢走不送。

看到这道题,我们就能想到一个简单的暴力做法,那就是直接乘起来再输出。但是当我们看到 \(1 \le m,n,o,p \le 6 \times 10^3\) 的数据范围和 \(125.00MB\) 的内存限制,会发现这玩意儿根本过不了,所以开始合理优化。

注意到题目只要求输出 \(d_{x,y}\) 的值,并且三个矩阵都是稀疏矩阵,我们可以只求与答案相关的乘积,不然过于浪费空间。为了方便讲解,我们不妨将 \(A \times B\) 得到的矩阵设为 \(Z\)。那么可以得出,\(d_{x,y} = \sum^o_{i=1}z_{x,i} \times c_{i,y}\)。换句话说,我们只需要求出矩阵 \(Z\) 的第 \(x\) 行。

同理,求得矩阵 \(Z\) 的第 \(x\) 行,就只需要矩阵 \(A\) 的第 \(x\) 行和矩阵 \(B\)

综上,只需要存一下矩阵 \(A\) 的第 \(x\) 行、矩阵 \(B\) 和矩阵 \(C\) 的第 \(y\) 列即可。

于是思路问题就解决了。

代码

远古代码,码风丑陋,不喜勿喷。

#include<bits/stdc++.h>
#define int long long
using namespace std;int x,y,n,m,o,p,k,e,f,te,tf,tk,len,ans,a[6001],bx[6001],by[6001],bz[6001],c[6001];
signed main()
{ios::sync_with_stdio(false);cin.tie();cout.tie();cin>>x>>y>>n>>m>>o>>p;cin>>e>>f>>k;do{if(e==x) a[f]=k;te=e;tf=f;tk=k;cin>>e>>f>>k;}while(e>=te&&(e!=te||f>tf));do{++len;bx[len]=e;by[len]=f;bz[len]=k;te=e,tf=f,tk=k;cin>>e>>f>>k;}while(e>=te&&(e!=te||f>tf));do{if(f==y) c[e]=k;}while(cin>>e>>f>>k);for(int i=1;i<=len;++i) ans+=bz[i]*a[bx[i]]*c[by[i]];cout<<ans;return 0;
}
http://www.sczhlp.com/news/49753/

相关文章:

  • 生成式AI购物助手技术架构解析
  • 卡表图解
  • 泰安做网站的外包加工网缝纫机外放加工活
  • 凡科建站登录官网邢台短视频优化
  • ios网站开发教程1688跨境专供海外代发
  • 投资理财网站开发wordpress用什么框架开发
  • 网站开发房源岗位wordpress培训机构主题
  • 曹县网站开发网站怎么排名
  • 云南网站开发软件网站链接建设及引流营销
  • 河南联通 网站备案电子商务网站的建设过程
  • 网站推广计划至少包括电商网站程序
  • 新榜小豆芽使用教程:多账号管理 + 一键发布全流程解析
  • 公司做网站费用入什么科目专业专业的网站开发
  • pc网站制作公司30_10_郑州网站制作
  • 如何做好网站首页简单手机网站开发软件
  • 做个网站多少钱一年深圳专业的网站建设
  • 正能量网站推荐icp备案查询
  • 建设品牌网站的好处佛山外贸网站建设资讯
  • 哪些网站免费注册企业域名做网站要学什么专业
  • [ Matplotlib] 阿里Qwen风格柱状图绘制
  • uni-app 跨平台项目的 iOS 上架流程:多工具组合的高效协作方案
  • 小程序注册拉新长沙seo服务
  • 深圳专业网站建设价格建设企业网站平台主要的目的是
  • 电子商务网站建设和管理的含义福建省城乡建设网站
  • 网站开发 质量管理网站怎样才有流量
  • 英文版在线客服系统支持海外客户的实时聊天解决方案
  • foundationpose 部署到jetson(2)
  • 免费建立网站的网站都有啥ps做网站需要几个画布
  • 彩票网站开发. 极云seo网站优化培训价格
  • 要如何关闭公司网站 撤销备案四川营销网站建设