http://poj.org/problem?id=3318

题意:问A和B两个矩阵相乘能否等于C。

思路:题目明确说出(n^3)的算法不能过,但是通过各种常数优化还是能过的。

这里的随机算法指的是随机枚举矩阵C的一个位置,然后通过A*B计算是否能够得到矩阵C相应位置的数,如果不等,就直接退出了,如果跑过一定的数量后能够相等,那么就可以判断这个矩阵C等于A*B的。第一次见这样的题目。。。有点新奇。

暴力算法:

 #include <cstdio>
using namespace std;
int a[][], b[][], c[][]; int read() {
int num = , f = ;
char c;
while((c = getchar()) == ' ' || c == '\n') ;
if(c == '-') f = ;
else num = c - '';
while((c = getchar()) >= '' && c <= '') num = num * + c - '';
if(f) return -num;
else return num;
} void solve(int n) {
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
int num = ;
for(int k = ; k <= n; k++)
num += a[i][k] * b[k][j];
if(num != c[i][j]) { puts("NO"); return ; }
}
}
puts("YES");
} int main() {
int n;
while(~scanf("%d", &n)) {
for(int i = ; i <= n; i++) for(int j = ; j <= n; j++) a[i][j] = read();
for(int i = ; i <= n; i++) for(int j = ; j <= n; j++) b[i][j] = read();
for(int i = ; i <= n; i++) for(int j = ; j <= n; j++) c[i][j] = read();
solve(n);
}
return ;
}

随机算法(试了好多次才对):

 #include <cstdio>
#include <ctime>
#include <cstdlib>
using namespace std;
int a[][], b[][], c[][]; int main() {
srand((unsigned)time(NULL));
int n;
while(~scanf("%d", &n)) {
for(int i = ; i <= n; i++) for(int j = ; j <= n; j++) scanf("%d", &a[i][j]);
for(int i = ; i <= n; i++) for(int j = ; j <= n; j++) scanf("%d", &b[i][j]);
for(int i = ; i <= n; i++) for(int j = ; j <= n; j++) scanf("%d", &c[i][j]);
bool f = ;
for(int t = ; t < ; t++) {
int row = rand() % n + ;
int col = rand() % n + ;
int num = ;
for(int i = ; i <= n; i++)
num = num + a[row][i] * b[i][col];
if(num != c[row][col]) { f = ; break; }
}
if(!f) puts("YES");
else puts("NO");
}
return ;
}

POJ 3318:Matrix Multiplication(随机算法)的更多相关文章

  1. POJ 3318 Matrix Multiplication(随机算法)

    题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...

  2. poj 3318 Matrix Multiplication 随机化算法

    方法1:暴力法 矩阵乘法+优化可以卡时间过的. 方法2:随机化 随机构造向量x[1..n],则有xAB=xC;这样可以将小运算至O(n^2). 代码如下: #include<iostream&g ...

  3. 数学(矩阵乘法,随机化算法):POJ 3318 Matrix Multiplication

    Matrix Multiplication Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17783   Accepted: ...

  4. Poj 3318 Matrix Multiplication( 矩阵压缩)

    Matrix Multiplication Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18928   Accepted: ...

  5. PKU 3318 Matrix Multiplication(随机化算法||状态压缩)

    题目大意:原题链接 给定三个n*n的矩阵A,B,C,验证A*B=C是否成立. 所有解法中因为只测试一组数据,因此没有使用memset清零 Hint中给的傻乎乎的TLE版本: #include<c ...

  6. poj 3318 Matrix Multiplication

    http://poj.org/problem?id=3318 矩阵A*矩阵B是否等于矩阵C #include <cstdio> #include <cstring> #incl ...

  7. [poj 3318] Matrix Multiplication (随机化+矩阵)

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

  8. POJ 3318 Matrix Multiplication(矩阵乘法)

    题目链接 题意 : 给你三个n维矩阵,让你判断A*B是否等于C. 思路 :优化将二维转化成一维的.随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小. #inc ...

  9. POJ 3318 - Matrix Multiplication 第一次用随机化解决问题...

    随机化还是很厉害的...印象最深的是以前手写快排~~一般加个随机化会使耗时不受输入数据的..时间更加稳定 这个题是人品题了...开始交了好多遍都过不了..多交几次终于过了... Program: #i ...

  10. PKU 3318 Matrix Multiplication(神奇的输入)

    #include<cstdio> using namespace std; ][]; ][],C[][]; int Read() { ; ; while((ch=getchar())==' ...

随机推荐

  1. multi-node和generic-pool两大利器

    1.multi-node node只能单进程,单cpu工作,而multi-node则可以让node在多进程下共享内存的工作,实现机制是依靠child_process的sendmsg做到的.想要了解具体 ...

  2. WPF 列表样式

    <Window x:Class="CollectionBinding.MainWindow"        xmlns="http://schemas.micros ...

  3. ajax 异步长连接遭遇堵塞,“排序执行请求”的问题解决

    今天开发一个网页聊天程序,利用AJAX保持着一个长连接监听新的聊天信息,之后又调用了另外一个AJAX来发言,于是就发生了一个AJAX线程被阻塞的问题. 在未监听到新的聊天信息的之前,发言用的AJAX就 ...

  4. Dynamic proxy (good-原创)

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...

  5. 零元学Expression Blend 4 - Chapter 34 啊~!!我不要毛毛的感觉!-使用布局修整「UseLayoutRounding」

    原文:零元学Expression Blend 4 - Chapter 34 啊~!!我不要毛毛的感觉!-使用布局修整「UseLayoutRounding」 本章将介绍UseLayoutRounding ...

  6. UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个)

    原文:UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个) 1. MainPage.xmal <Grid Background="{ThemeResource Applica ...

  7. Easy Compression Library(代替TFileStream, TMemoryStream and TStream)

    Easy Compression Library is a very easy-to-use replacement of TFileStream, TMemoryStream and other T ...

  8. 主要C++流派,看看你是哪一流

    1. 经典C++流:类是核心,例程多用C Runtime的,很少用模版,一般是正统教育的结果.2. 古典C流:基本上当C用,偶尔用用对象,不使用异常,喜欢怀旧.3. MFC流:秉承MFC的风格,主要使 ...

  9. 编译Qt5.0连接MySql5.5数据库的驱动(5.0版本的编译,我记得5.2开始自带了)

    第一步 1.准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码.安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\ ...

  10. 【Web前端Talk】无聊吗?写个【飞机大战】来玩吧(下篇)

    上一篇介绍了如何使用cocos creator开发游戏,此篇是详细介绍功能点以及如何部署打包至微信小游戏体验. 欢迎关注我们的公众号:Web前端Talk.前端文章持续更新. 资源管理制作 1.准备工具 ...