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的更多相关文章
- 【数学】Matrix Multiplication
Matrix Multiplication Time Limit: 2000MS Memory Limit: 65536K Total S ...
- hdu 4920 Matrix multiplication bitset优化常数
Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- 矩阵乘法 --- hdu 4920 : Matrix multiplication
Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- hdu4920 Matrix multiplication 模3矩阵乘法
hdu4920 Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 ...
- acdeream Matrix Multiplication
D - Matrix Multiplication Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/O ...
- HDU 4920 Matrix multiplication 矩阵相乘。稀疏矩阵
Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- Matrix multiplication hdu4920
Problem Description Given two matrices A and B of size n×n, find the product of them. bobo hates big ...
- HDU-4920 Matrix multiplication
矩阵相乘,采用一行的去访问,比采用一列访问时间更短,根据数组是一行去储存的.神奇小代码. Matrix multiplication Time Limit: 4000/2000 MS (Java/Ot ...
- 数学(矩阵乘法,随机化算法):POJ 3318 Matrix Multiplication
Matrix Multiplication Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17783 Accepted: ...
随机推荐
- php学习十三:其他关键字
在php中,其实不止在php中,在其他语言中我们也会常常接触到一些关键字,整理了一下php当中的一下关键字,可能有些不全,希望大家指出来,多多交流,一起进步. 1.final 特性:1.使用final ...
- eclipse export runnable jar
如果要导出可运行的JAR文件,需要选择Runnable Jar File. 方法/步骤 1. 选择要到处JAR文件的工程,右键选择“Export”: 2. 选择“Java-->Run ...
- JS-cookie封装
智能社学习笔记 <script type="text/javascript"> /*****设置cookie*****/ function setCookie(name ...
- python小项目练习之转换像素图片为字符图
实例来源实验楼网站,没事可以多逛逛,在此多谢实验楼的无私分享 from PIL import Image import argparse """ description: ...
- JavaWeb温习之HttpServletResquest对象
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 1 ...
- all index range ref eq_ref const system 索引type说明
背景知识 在使用sql的过程中经常需要建立索引,而每种索引是怎么处罚的又是怎么起到作用的,首先必须知道索引和索引的类型. 索引类型type 我们可以清楚的看到type那一栏有index ALL eq_ ...
- ThinkPHP分页用异步来做,玩转分页类!
具体为什么用异步来做分页我就不多说了! 用异步来做分页,主要还是看分页类怎么玩! 方便管理,还是把Ajax分页作为一个工具来使用: 同样新建工具类: 多次尝试,最终修改好的分页类是这样的:(我自己使用 ...
- GROUPING SETS与GROUP_ID
SELECT E.DEPARTMENT_ID DID, E.JOB_ID JOB, E.MANAGER_ID MID, SUM(E.SALARY) SUM_SAL, COUNT(E.EMPLOYEE_ ...
- 04.ActiveMQ与Spring JMS整合
SpringJMS使用参考:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html ...
- mysql登录密码特殊字符处理
mysql -h 192.168.12.23 -u root -pClz_b1qYPyl6$Zu1 登录报错 mysql -h 192.168.12.23 -u root -pClz_b1qYPy ...