方法1:暴力法

矩阵乘法+优化可以卡时间过的。

方法2:随机化

随机构造向量x[1..n],则有xAB=xC;这样可以将小运算至O(n^2).

代码如下:

#include<iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
int a[][],b[][],c[][],n,x[];
bool cal()
{
int i,j,k;
long long an[],an2[];
long long ans;
long long sum=;
for(i=;i<n;i++){
x[i] = rand()%;
an[i]=;an2[i]=;
}
for(i=;i<n;i++)
for(j=;j<n;j++){
an[i]+=x[j]*a[j][i];
}
for(i=;i<n;i++)
for(j=;j<n;j++){
an2[i]+=an[j]*b[j][i];
}
bool flag=;
for(i=;i<n;i++){
ans=;
for(j=;j<n;j++){
ans+=x[j]*c[j][i];
}
if(ans!=an2[i]){
flag=;
break;
}
}
if(flag) return ;
return ;
}
int main()
{
int i,j;
cin>>n;
for(i=;i<n;i++)
for(j=;j<n;j++)
scanf("%d",&a[i][j]);
for(i=;i<n;i++)
for(j=;j<n;j++)
scanf("%d",&b[i][j]);
for(i=;i<n;i++)
for(j=;j<n;j++)
scanf("%d",&c[i][j]);
if(cal()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return ;
}

poj 3318 Matrix Multiplication 随机化算法的更多相关文章

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

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

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

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

  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. POJ 3318 - Matrix Multiplication 第一次用随机化解决问题...

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

  6. [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 ...

  7. poj 3318 Matrix Multiplication

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

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

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

  9. POJ3318--Matrix Multiplication 随机化算法

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

随机推荐

  1. jquery 评论等级(很差,差,一般,好,很好)代码

    可能标题没有说的太明白,这里先让大家看一下效果,以便让客官们了解小弟说的是什么... 看完效果后估计各位客官已经明白小弟说的是什么了吧,下面小弟就带大家看下代码 <style> .maxd ...

  2. Memcached 安装配置

    安装: memcached -d install memcached -d start net start "Memcached Server" 卸载: memcached -d ...

  3. Swift泛型和泛型函数

    泛型(generic)可以使我们在程序代码中定义一些可变的部分,在运行的时候指定.使用泛型可以最大限度地重用代码.保护类型的安全以及提高性能.在Swift集合类中,已经采用了泛型.一.一个问题的思考怎 ...

  4. jquery-ui 中treegird 逐步加载

    官方网站上没有ajax逐步加载的例子,自己研究了下 js代码 $("#bomStructureTable").treegrid({ url : "systemcontro ...

  5. 模板:cin.getline用法

    Ref: http://baike.baidu.com/view/2383876.htm   此函数会一次读取多个字符(包括空白字符).它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字 ...

  6. UVaOJ 120 - Stacks of Flapjacks

    120 - Stacks of Flapjacks 题目看了半天......英语啊!!! 好久没做题...循环输入数字都搞了半天...罪过啊!!! 还是C方便一点...其实C++应该更方便的...C+ ...

  7. mysql 运行sql脚本文件

    #只运行,不导出 mysql> source /home/user/to_run.sql; #导出 $ mysql -h host -u user -ppassword database < ...

  8. Maven Dependency Scope用法

    原帖地址:http://uule.iteye.com/blog/2087485 官方API描述 Dependency scope 是用来限制Dependency的作用范围的, 影响maven项目在各个 ...

  9. 【原】web页面登陆验证

    using Itcast.Mall.Model; using System; using System.Collections.Generic; using System.Linq; using Sy ...

  10. Cassandra1.2文档学习(14)—— 事务和并发控制

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...