poj 3318 Matrix Multiplication 随机化算法
方法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 随机化算法的更多相关文章
- PKU 3318 Matrix Multiplication(随机化算法||状态压缩)
题目大意:原题链接 给定三个n*n的矩阵A,B,C,验证A*B=C是否成立. 所有解法中因为只测试一组数据,因此没有使用memset清零 Hint中给的傻乎乎的TLE版本: #include<c ...
- POJ 3318 Matrix Multiplication(随机算法)
题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...
- 数学(矩阵乘法,随机化算法):POJ 3318 Matrix Multiplication
Matrix Multiplication Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17783 Accepted: ...
- Poj 3318 Matrix Multiplication( 矩阵压缩)
Matrix Multiplication Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18928 Accepted: ...
- POJ 3318 - Matrix Multiplication 第一次用随机化解决问题...
随机化还是很厉害的...印象最深的是以前手写快排~~一般加个随机化会使耗时不受输入数据的..时间更加稳定 这个题是人品题了...开始交了好多遍都过不了..多交几次终于过了... Program: #i ...
- [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 ...
- poj 3318 Matrix Multiplication
http://poj.org/problem?id=3318 矩阵A*矩阵B是否等于矩阵C #include <cstdio> #include <cstring> #incl ...
- POJ 3318 Matrix Multiplication(矩阵乘法)
题目链接 题意 : 给你三个n维矩阵,让你判断A*B是否等于C. 思路 :优化将二维转化成一维的.随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小. #inc ...
- POJ3318--Matrix Multiplication 随机化算法
Description You are given three n × n matrices A, B and C. Does the equation A × B = C hold true? In ...
随机推荐
- 公交CPU卡原理
现在的公交卡已经开始逐步的采用IC卡(CPU卡?什么东东?),而且在国家交通部的推动下,开始了全国范围内的互联互通.以后,手里只用拿着一张卡,就可以走遍全国,而且如果支持在线充值的话,基本上就不用在车 ...
- [GeekBand] 探讨C++新标准之新语法——C++ 11~14
一. 可变参数模板(Variadic Templates) 在C++11中,出现了参数数目可变的模板,这部分在之前C++高级编程的时候就有学习到. 其实,在C中就有类似的设定.最常用的printf() ...
- 一些常用sqlite语句
1,如果表不存在就新建一个 CComBSTR bstrCreatBat(L”CREATE TABLE IF NOT EXISTS tb_Name (\ rowIdIndex INTEGER PRIM ...
- Gitlab 与 Git Windows 客户端一起使用的入门流程
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3824934.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- httpd配置Gzip压缩
以下设置在 /etc/httpd/conf/httpd.conf 文件末尾加入即可.(不同方式安装的httpd可能主配置文件位置不同,请自行查找) 一.mod_deflate模块:文件压缩 官方文档: ...
- 【C#】 开机启动/取消开机启动
1.开机启动 using Microsoft.Win32; RegistryKey runKey = Registry.LocalMachine.CreateSubKey(@"SOFTWAR ...
- linux关闭服务的方法
本文介绍下,在linux下关闭服务的方法,主要学习chkconfig的用法,有需要的朋友参考下. 先来看一个在linux关闭服务的例子,例如,要关闭sendmail服务,则可以按如下操作. 例1, 复 ...
- ThinkPHP图片上传
ThinkPHP是国内比较流行的轻量级的PHP框架,它在国内流行的一个最主要的因素在于它的说明文档非常健全完善,以及它源码内的注释都是中文的,方便于英语能力较差的程序员学习. 图片上传在网站里是很常用 ...
- phpcmsV9中表单向导在js调用里日期控件在IE下报Calendar未定义的解决办法
最近在phpcmsV9里用表单向导弄个的提交表单,但用了日期和时间类型时,用 <script language='javascript' src='{APP_PATH}index.php?m ...
- realloc() 用法详解
原型:extern void *realloc(void *mem_address, unsigned int newsize); 语法:指针名=(数据类型*)realloc(要改变内存大小的指针名, ...