题目链接

题意 : 给你三个n维矩阵,让你判断A*B是否等于C。

思路 :优化将二维转化成一维的。随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小。

 //
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <iostream> using namespace std ; int a[][],b[][],c[][] ;
int d[],c1[],d1[],ans[] ; int main()
{
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]) ;
srand((unsigned int)time());
for(int i=; i<n; i++)
{
d[i]=rand()%;
}
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
{
d1[i] += b[i][j]*d[j] ;//二维乘一维等于一维,一维乘二维等于二维
c1[i] += c[i][j]*d[j] ;
}
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
ans[i] += a[i][j]*d1[j] ;
bool flag = false ;
for(int i = ; i < n ; i++)
if(ans[i] != c1[i])
{
flag = true ;
break ;
}
if(!flag)
printf("YES\n") ;
else printf("NO\n") ;
}
return ;
}

POJ 3318 Matrix Multiplication(矩阵乘法)的更多相关文章

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

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

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

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

  3. poj 3318 Matrix Multiplication 随机化算法

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

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

  5. poj 3318 Matrix Multiplication

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

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

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

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

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

  8. HDU 4920 Matrix multiplication(矩阵相乘)

    各种TEL,233啊.没想到是处理掉0的情况就能够过啊.一直以为会有极端数据.没想到居然是这种啊..在网上看到了一个AC的奇妙的代码,经典的矩阵乘法,仅仅只是把最内层的枚举,移到外面就过了啊...有点 ...

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

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

随机推荐

  1. 3月3日(5) Roman to Integer

    原题 Roman to Integer 题意很简单,把Roman字母翻译成int. 实现方式也不难,针对每个字符转成int,从右往左,依次判断,如果当前值比上一个值大则相加,小则相减. 什么,你问我怎 ...

  2. 【风马一族_Python】 安装pip与Numpy

    ------------------------------------------------------------------------------------------------- 原因 ...

  3. Web应用登出后防止浏览器后退

    通常情况下,浏览器会对页面进行缓存,此时可以通过后退访问刚才的页面,如:Web应用登出后后退能够访问刚才被缓存的页面,这样在有些情况下是不够安全的,解决防止后退的办法如下: response.setH ...

  4. C# 网卡IP(网上资料整理)

    //设置对外访问所使用网卡的IP string sendingIp = "192.168.0.1"; //设置对外访问所使用的端口 ; Uri uri = new Uri(&quo ...

  5. C# 操作.ini文件

    1.声明变量 #region "声明变量" /// <summary> /// 写入INI文件 /// </summary> /// <param n ...

  6. JS重写alert,保证弹窗错误的友好性

    // ------------------------------------------------------------- // 重写alert,保证弹窗错误的友好性 var j_oldAler ...

  7. JS 获取select(多选下拉)中所选值的示例代码

    通过js获取select(多选下拉)中所选值,具体实现如下,有需要的朋友可以参考下,希望对大家有所帮助 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...

  8. 使用Telerik的登陆模板实现DoubanFm的登陆(WP7)

    Telerik的控件很强大.我们直接使用其登陆模板. 在装过Telerik WP版后,就可以在VS里非常方便的添加页面了. 我们选择 Sign In Form 其XAML不是很长,直接贴出来 < ...

  9. JDBC 连接数据库

          JAVA使用JDBC访问数据库的步骤: 1.     得到数据库驱动程序   (导包) 2.     创建数据库连接  3.     执行SQL语句 4.     得到结果集 5.     ...

  10. 绘制dot 图

    常用参数 格式:dot -T<type> -o<outfile> <infile.dot> 输入文件是<infile.dot>,生成的格式由<ty ...