POJ 3213 矩阵乘法(优化)
思路:
1.暴力出奇迹 n=1000 n^3矩阵乘法竟然能卡过。。。(Tips:不要乱写读入优化,这玩意儿加了超时,不加AC……)
2.
注意题目中的“最多只能有一个地方不一样,,”
我就想到了 能不能用一行的和来优化一下。。一次算一行
我们可以手动模拟一下。。 发现了一个规律……
(本人的草稿纸…… 略乱)
我就模拟了一下答案的第一行。。
发现:
先统计一个sumb[i] +=a[i][j](1<=j<=M)
这个是B数组第i行前M个数的和
sumc[i]是C数组第i行的和
a[i][j]*sumb[j]应该等于sumc[i] (不信的话你可以手动模拟啊~)
这样子是n^2的复杂度
如果不等于sumc[i]的话 就做一遍一行的矩阵乘法就OK了。。
整体复杂度 O (n^2)
简单的矩阵乘法。。(是不是很短)
//By SiriusRen
#include <cstdio>
using namespace std;
#define s 1005
#define ff(x,y) for(int i=1;i<=x;i++)for(int j=1;j<=y;j++)
int N,P,M,a[s][s],b[s][s],c[s][s],ans[s][s];
int main(){
scanf("%d%d%d",&N,&P,&M);
ff(N,P)scanf("%d",&a[i][j]);
ff(P,M)scanf("%d",&b[i][j]);
ff(N,M)scanf("%d",&c[i][j]);
ff(N,M)for(int k=1;k<=P;k++)ans[i][j]+=a[i][k]*b[k][j];
ff(N,M)if(ans[i][j]!=c[i][j]){printf("No\n%d %d\n%d",i,j,ans[i][j]);return 0;}
printf("Yes");
}
这是加了优化的
//By SiriusRen
#include <cstdio>
using namespace std;
#define siz 1005
int N,P,M,a[siz][siz],b[siz][siz],c[siz][siz],jy[siz],sumb[siz],sumc[siz];
signed main(){
scanf("%d%d%d",&N,&P,&M);
for(int i=1;i<=N;i++)
for(int j=1;j<=P;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=P;i++)
for(int j=1;j<=M;j++){
scanf("%d",&b[i][j]);
if(j<=M)sumb[i]+=b[i][j];
}
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
scanf("%d",&c[i][j]),sumc[i]+=c[i][j];
for(int i=1;i<=N;i++){
int temp=0;
for(int j=1;j<=P;j++)
temp+=a[i][j]*sumb[j];
if(temp!=sumc[i]){
for(int j=1;j<=M;j++){
for(int k=1;k<=P;k++)
jy[j]+=a[i][k]*b[k][j];
if(jy[j]!=c[i][j])
printf("No\n%d %d\n%d",i,j,jy[j]);
}
return 0;
}
}
puts("Yes");
}
POJ 3213 矩阵乘法(优化)的更多相关文章
- [BZOJ 1009] [HNOI2008] GT考试 【AC自动机 + 矩阵乘法优化DP】
题目链接:BZOJ - 1009 题目分析 题目要求求出不包含给定字符串的长度为 n 的字符串的数量. 既然这样,应该就是 KMP + DP ,用 f[i][j] 表示长度为 i ,匹配到模式串第 j ...
- [转]OpenBLAS项目与矩阵乘法优化
课程内容 OpenBLAS项目介绍 矩阵乘法优化算法 一步步调优实现 以下为公开课完整视频,共64分钟: 以下为公开课内容的文字及 PPT 整理. 雷锋网的朋友们大家好,我是张先轶,今天主要介绍一下我 ...
- 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
挺好的数位dp……先说一下我个人的做法:经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所有数 ...
- bzoj4870: [Shoi2017]组合数问题(DP+矩阵乘法优化)
为了1A我居然写了个暴力对拍... 那个式子本质上是求nk个数里选j个数,且j%k==r的方案数. 所以把组合数的递推式写出来f[i][j]=f[i-1][j]+f[i-1][(j-1+k)%k].. ...
- 形态形成场(矩阵乘法优化dp)
形态形成场(矩阵乘法优化dp) 短信中将会涉及前\(k\)种大写字母,每个大写字母都有一个对应的替换式\(Si\),替换式中只会出现大写字母和数字,比如\(A→BB,B→CC0,C→123\),代表 ...
- HDU 5863 cjj's string game (矩阵乘法优化递推)
题目大意:用k种字符构建两个长度为n的字符串(每种字符有无限多个),要求对应位置字符相同的连续子串最长长度为m,问方法数. 其中k,n,m是输入,n(1<=n<=1000000000), ...
- 斐波那契数列 矩阵乘法优化DP
斐波那契数列 矩阵乘法优化DP 求\(f(n) \%1000000007\),\(n\le 10^{18}\) 矩阵乘法:\(i\times k\)的矩阵\(A\)乘\(k\times j\)的矩 ...
- 洛谷2151[SDOI2009]HH去散步(dp+矩阵乘法优化)
一道良好的矩阵乘法优化\(dp\)的题. 首先,一个比较\(naive\)的想法. 我们定义\(dp[i][j]\)表示已经走了\(i\)步,当前在点\(j\)的方案数. 由于题目中限制了不能立即走之 ...
- 矩阵乘法优化DP复习
前言 最近做毒瘤做多了--联赛难度的东西也该复习复习了. Warning:本文较长,难度分界线在"中场休息"部分,如果只想看普及难度的可以从第五部分直接到注意事项qwq 文中用(比 ...
随机推荐
- htmlunit 简单操作
首先我们新建一个Maven普通客户端项目,然后打开pom.xml 引入htmlunit支持: <dependency> <groupId>net.sourceforge.htm ...
- Django开发之路 一(django安装并测试运行)
安装Django与测试 1.虚拟环境的安装 一般来说Django的开发最好是在虚拟环境上进行,这样的好处是可以将不同的Django的项目的环境分割开来,相互不影响.比如说项目一用到Python2.x和 ...
- iOS开发者账号证书配置及相关工作
申请到开发者账号,肯定要先配置一下才可以使用,这主要是iOS证书及配置文件: 以下这篇文章写得比较全面,故不再累赘,需要的同学可以看一下: iOS开发证书与配置文件的使用
- nsrunloop与模式
scrollview的模式切换:退出原来的模式使用新模式. 2018-04-18 18:16:41.208113+0800 CEMonitor[5014:410604] kCFRunLoopDefau ...
- LeetCode Golang 2. 两数相加
2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...
- 使用Eclipse将项目上传至远程GitLab
一.先将项目提交至本地仓库 1. 右击项目——Team——Share Project… 2.在弹出框中,选择Git——Next 3.在弹出框中进行如下步骤操作 4.至此,我们已经成功创建了本地GIT ...
- HDU 5288 OO’s Sequence [数学]
HDU 5288 OO’s Sequence http://acm.hdu.edu.cn/showproblem.php?pid=5288 OO has got a array A of size ...
- iOS开发——自动填充短信验证码
苹果在iOS 12,改进了一个很人性化的小细节.在做短信验证码功能的时候,自动获取短信中的验证码,然后点击填充即可.不用再向之前那样麻烦,自己看到弹出的短信信息后,死记硬背,再一个个敲上去,害怕背错了 ...
- PHP内置SOAP扩展客户端的使用例子
SOAP已经是属于OUT范畴的技术了,不过因为历史原因,时不时还是会用到它,以前都是用NuSOAP,现在准备试试PHP内置的SOAP扩展.由于文本只打算说说客户端的用法,所以得先找一些能直接用的服务端 ...
- 一些css布局
# css布局 #---bootstrap 详情请看官方文档---首先要按照相应的官方规范引入相应的css js fonts等 container相当于一个容器 一般设置一个 接下来设置行 用ro ...