poj3318 Matrix Multiplication

题意:给定$n*n(n<=500)$的矩阵$A,B,C$,如果$A*B==C$,输出“YES”,否则为“NO”;多组数据,$O(n^{3})$必T

我们可以随机生成一个神奇的列向量$v$,你可以把它看做n*1或1*n的矩阵,里面的元素随机为0或1

蓝后我们考察 $A*(B*v)$和$C*v$是否相等

灰常显然 $A*B!=C  ==>  A*(B*v)!=C*v$

那么我们每次判断有$\frac{1}{2}$的概率判错

于是我们多判几次

试60次时,判错率$=2^{-60}\approx10^{-20}$

end.

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define re register
using namespace std;
template<typename T>T max(T &a,T &b){return a>b?a:b;}
template<typename T>T min(T &a,T &b){return a<b?a:b;}
#define N 501
int n,k,u,a[N][N],b[N][N],c[N][N],d[N],e[N],f[N];
int main(){
srand();
while(scanf("%d",&n)!=EOF){
for(re int i=;i<=n;++i)
for(re int j=;j<=n;++j)
scanf("%d",&a[i][j]);
for(re int i=;i<=n;++i)
for(re int j=;j<=n;++j)
scanf("%d",&b[i][j]);
for(re int i=;i<=n;++i)
for(re int j=;j<=n;++j)
scanf("%d",&c[i][j]);
for(k=;k<=;++k){
for(re int i=;i<=n;++i) d[i]=rand()&;
for(re int i=;i<=n;++i){
e[i]=;
for(re int j=;j<=n;++j)
e[i]+=c[i][j]*d[j];
}
for(re int i=;i<=n;++i){
f[i]=;
for(re int j=;j<=n;++j)
f[i]+=b[i][j]*d[j];
}
for(re int i=;i<=n;++i) d[i]=f[i];
for(re int i=;i<=n;++i){
f[i]=;
for(re int j=;j<=n;++j)
f[i]+=a[i][j]*d[j];
}
for(u=;u<=n&&e[u]==f[u];++u);
if(u<=n) break;
}puts(k>?"YES\n":"NO\n");
}return ;
}

poj3318 Matrix Multiplication的更多相关文章

  1. 【数学】Matrix Multiplication

                                 Matrix Multiplication Time Limit: 2000MS   Memory Limit: 65536K Total S ...

  2. hdu 4920 Matrix multiplication bitset优化常数

    Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  3. 矩阵乘法 --- hdu 4920 : Matrix multiplication

    Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  4. hdu4920 Matrix multiplication 模3矩阵乘法

    hdu4920 Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 ...

  5. acdeream Matrix Multiplication

    D - Matrix Multiplication Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/O ...

  6. HDU 4920 Matrix multiplication 矩阵相乘。稀疏矩阵

    Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  7. Matrix multiplication hdu4920

    Problem Description Given two matrices A and B of size n×n, find the product of them. bobo hates big ...

  8. HDU-4920 Matrix multiplication

    矩阵相乘,采用一行的去访问,比采用一列访问时间更短,根据数组是一行去储存的.神奇小代码. Matrix multiplication Time Limit: 4000/2000 MS (Java/Ot ...

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

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

随机推荐

  1. 经验之道:最有效的iOS内存泄漏检测

    版权声明:本文由胡涛原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/125 来源:腾云阁 https://www.qclou ...

  2. line-height和vertical-algin

    项目中,经常会用到line-height和vertical-algin来解决垂直居中的问题,但对其原理和应用限制却很少了解.因此做了一下总结: line-height具有继承性,对inline元素.t ...

  3. 转移wordpress到另一台主机

    做项目的代码是两个人,我想把另一个小伙伴做的转移到自己的linux系统上(主要是linux下一片空白,从头做太浪费时间了) 这个过程其实也可以用来类比从本地到服务器的过程(可能略有不同,真上线的时候会 ...

  4. kubernetes创建yaml,pod服务一直处于 ContainerCreating状态的原因查找与解决

    最近刚刚入手研究kubernetes,运行容器的时候,发现一直处于ContainerCreating状态,悲了个催,刚入手就遇到了点麻烦,下面来讲讲如何查找问题及解决的 运行容器命令: kubectl ...

  5. 教主泡嫦娥[有趣的dp状态设计]

    P1342 教主泡嫦娥 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 2012年12月21日下午3点14分35秒,全世界各国的总统以及领导人都已经汇聚在中国 ...

  6. Navicat 创建 Mysql 函数

    1.点击新建函数 2.写函数,保存为v1 3.调用 SELECT id,v1(id) from 表

  7. 【BZOJ5085】最大 鸽巢原理

    [BZOJ5085]最大 Description 给你一个n×m的矩形,要你找一个子矩形,价值为左上角左下角右上角右下角这四个数的最小值,要你最大化矩形的价值. Input 第一行两个数n,m,接下来 ...

  8. 补课:PageRank

    最近连续听到PageRank算法,久闻其名,不闻其详,心里虚得很,今儿补补课. PageRank算法的网络资料非常全面,毕竟是将近二十年的经典算法,算法细节可以参考文末链接,这里简单说说我的理解. P ...

  9. log4j输出多个自定义日志文件(转)

    如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: ...

  10. mariadb安装配置

    CentOS 7安装MariaDB 详解以及相关配置 第一步:添加 MariaDB yum 仓库 首先在CentOS操作系统中/etc/yum.repos.d/目录下添加 MariaDB 的YUM配置 ...