矩阵乘法分配律+bitset优化——hdu4920
因为是模3,所以把原矩阵拆成两个01矩阵,然后按分配律拆开分别进行矩阵乘法,行列用bitset来存进行优化即可
注意
int bitset<int>::count() 函数可以统计bitset里有多少1
int bitset<int>::any() 函数可以统计bitset里是否有1
/* (A+B)*(C+D)=A*C+A*D+B*C+B*D */ #include<bits/stdc++.h> using namespace std; #define maxn 805 struct Matrix{int n; bitset<maxn>r[maxn];//按行表示 bitset<maxn>c[maxn];//按列表示 }A,B,C,D; int E[maxn][maxn],F[maxn][maxn],G[maxn][maxn],H[maxn][maxn]; int n;void mul(Matrix A,Matrix B,int res[maxn][maxn]){bitset<maxn>tmp;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){tmp=A.r[i]&B.c[j];res[i][j]=tmp.count()%3; } }int main(){while(cin>>n){A.n=B.n=C.n=D.n=n;for(int i=1;i<=n;i++){A.c[i].reset();A.r[i].reset();B.c[i].reset();B.r[i].reset();C.c[i].reset();C.r[i].reset();D.c[i].reset();D.r[i].reset(); } for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int x;scanf("%d",&x);x%=3;if(x>=1){A.r[i][j]=1;A.c[j][i]=1;}if(x==2){B.r[i][j]=1;B.c[j][i]=1;}}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int x;scanf("%d",&x);x%=3;if(x>=1){C.r[i][j]=1;C.c[j][i]=1;}if(x==2){D.r[i][j]=1;D.c[j][i]=1;}}mul(A,C,E);mul(A,D,F);mul(B,C,G);mul(B,D,H);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int ans=E[i][j]+F[i][j]+G[i][j]+H[i][j];if(j!=1)printf(" ");printf("%d",ans%3);}puts("");} } }
转载于:https://www.cnblogs.com/zsben991126/p/11182183.html
矩阵乘法分配律+bitset优化——hdu4920相关推荐
- 从矩阵乘法来看-O优化和ijk执行顺序对程序性能的影响
从矩阵乘法来看-O优化和ijk执行顺序对程序性能的影响 根据计算矩阵乘积的c程序,主要想做想做两件事情: 统计采用不同的优化选项编译程序所用的时间,感受-O优化带来的性能提升. 看看矩阵乘法中不同循环 ...
- Codeforces 576D Flights for Regular Customers (图论、矩阵乘法、Bitset)
题目链接 http://codeforces.com/contest/576/problem/D 题解 把边按\(t_i\)从小到大排序后枚举\(i\), 求出按前\((i-1)\)条边走\(t_i\ ...
- 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
挺好的数位dp-- 先说一下我个人的做法: 经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所 ...
- 程序性能优化探讨(6)——矩阵乘法优化之分块矩阵
有一种性格叫做偏执,有一种矩阵优化运算叫做分块.实话说,也许我这辈子也用不上这种随牛B但很复杂的算法,有些版本的教材直接删除这个内容.但越是这样我越想不过,因此借写这篇博客,把分块矩阵乘法彻底分析清楚 ...
- 矩阵乘法计算速度再次突破极限,我炼丹能更快了吗?| 哈佛、MIT
梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI n阶矩阵乘法最优解的时间复杂度再次被突破,达到了. 按定义直接算的话,时间复杂度是O(n³). 光这么说可能不太直观,从图上可以看出,n足够 ...
- 循环取矩阵的某行_1.2 震惊! 某大二本科生写的矩阵乘法吊打Mathematica-线性代数库BLAS-矩阵 (上)...
本文是 1. 线性代数库BLASzhuanlan.zhihu.com 系列的第二篇, 将讲述矩阵类的结构和矩阵基础运算的AVX2加速算法. 1. 矩阵类的结构 在讲述矩阵各种算法之前很有必要详解一下 ...
- 稀疏矩阵加法运算_1.2 震惊! 某大二本科生写的矩阵乘法吊打Mathematica-线性代数库BLAS-矩阵 (上)...
本文是 1. 线性代数库BLASzhuanlan.zhihu.com 系列的第二篇, 将讲述矩阵类的结构和矩阵基础运算的AVX2加速算法. 1. 矩阵类的结构 在讲述矩阵各种算法之前很有必要详解一下 ...
- DeepMind攻克50年数学难题!AlphaZero史上最快矩阵乘法算法登Nature封面
新智元报道 编辑:David Joey [新智元导读]DeepMind碾压人类高手的AI围棋大师AlphaZero,下一个目标是数学算法!现已发现50年以来最快的矩阵乘法算法. 下围棋碾压人类 ...
- 如何在CPU上优化GEMM矩阵乘法
如何在CPU上优化GEMM矩阵乘法 How to optimize GEMM on CPU (TL;DR) TVM 提供抽象接口,允许用户分别描述算法和算法的实现组织(所谓的调度).通常,在高性能调度 ...
最新文章
- redis 查看key的有效期_你经常忽略的Redis常见面试题,精选给你整理
- 大数据学习——Storm集群搭建
- 2019年全国各地房价排名50强
- es根据字段长度过滤_Es 根据数组长度查询
- 发布 .NET 5 带运行时单文件应用时优化文件体积的方法
- 设计模式之 里氏替换原则
- IntelliJ IDEA统计项目代码行数
- 独家!币安被盗原因找到了!7074 枚比特币竟是这样丢掉的
- Windows Server 2003成员服务器基准用户权限分配策略
- win10便签常驻桌面_win7和win10自带桌面便签哪里找
- 软件脱壳常见的几种方法
- 1467B. Hills And Valleys(思维模拟)
- Android系统体系结构
- glut glfw glad SOIL glm freetype等配置
- 第1143期AI100_机器学习日报(2017-11-04)
- 如何提高团队管理能力
- 《linux命令行与shell脚本编程大全》读书笔记第一、二章
- 满足一个小妹妹的需求——给她批量抓取动漫图片
- [附源码]计算机毕业设计springboot高校流浪动物领养网站
- 微软服务器无法连接,wsus无法连接同步微软更新服务器