【随机化算法】codeforces Matrix God
http://codeforces.com/gym/101341
【题意】
- 给定三个方阵A,B,C,问AB=C是否成立?
- 方阵的规模最大为1000
【思路】
- 求AB的时间复杂度为n*n*n,会超时
- 左乘一个一行n列的向量,时间复杂度降为n*n
【Accepted】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue> using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=1e3+;
const ll mod=1e9+;
ll a[maxn][maxn],b[maxn][maxn],c[maxn][maxn],r[][maxn],ra[][maxn],rab[][maxn],rc[][maxn];
int n,m; int main()
{
while(~scanf("%d",&n))
{
for(int i=;i<=n;i++)
{
for(int k=;k<=n;k++)
{
scanf("%lld",&a[i][k]);
}
}
for(int i=;i<=n;i++)
{
for(int k=;k<=n;k++)
{
scanf("%lld",&b[i][k]);
}
}
for(int i=;i<=n;i++)
{
for(int k=;k<=n;k++)
{
scanf("%lld",&c[i][k]);
}
}
for(int i=;i<=n;i++)
{
r[][i]=rand()%+;
}
memset(ra,,sizeof(ra));
memset(rab,,sizeof(rab));
for(int i=;i<=n;i++)
{
for(int k=;k<=n;k++)
{
ra[][i]=(ra[][i]+r[][k]*a[k][i]%mod)%mod;
}
}
for(int i=;i<=n;i++)
{
for(int k=;k<=n;k++)
{
rab[][i]=(rab[][i]+ra[][k]*b[k][i]%mod)%mod;
}
}
for(int i=;i<=n;i++)
{
for(int k=;k<=n;k++)
{
rc[][i]=(rc[][i]+r[][k]*c[k][i]%mod)%mod;
}
}
int flag=;
for(int i=;i<=n;i++)
{
if(rab[][i]!=rc[][i])
{
flag=;
break;
}
}
if(flag)
{
puts("YES");
}
else
{
puts("NO");
} }
return ;
}
【随机化算法】codeforces Matrix God的更多相关文章
- PKU 3318 Matrix Multiplication(随机化算法||状态压缩)
题目大意:原题链接 给定三个n*n的矩阵A,B,C,验证A*B=C是否成立. 所有解法中因为只测试一组数据,因此没有使用memset清零 Hint中给的傻乎乎的TLE版本: #include<c ...
- POJ 矩阵相乘 (随机化算法-舍伍德(Sherwood))
周三的算法课,主要讲了随机化算法,介绍了拉斯维加斯算法,简单的理解了为什么要用随机化算法,随机化算法有什么好处. 在处理8皇后问题的时候,穷举法是最费时的,回朔比穷举好点,而当数据量比较大的时候,如1 ...
- POJ3318--Matrix Multiplication 随机化算法
Description You are given three n × n matrices A, B and C. Does the equation A × B = C hold true? In ...
- 2018.09.14 codeforces364D(随机化算法)
传送门 根据国家集训队2014论文集中胡泽聪的随机化算法可以通过这道题. 对于每个数,它有12" role="presentation" style="posi ...
- PKU 2531 Network Saboteur(dfs+剪枝||随机化算法)
题目大意:原题链接 给定n个节点,任意两个节点之间有权值,把这n个节点分成A,B两个集合,使得A集合中的每一节点与B集合中的每一节点两两结合(即有|A|*|B|种结合方式)权值之和最大. 标记:A集合 ...
- [随机化算法] 听天由命?浅谈Simulate Anneal模拟退火算法
Simulate Anneal模拟退火算法,是一种用于得到最优解的随机化算法. 如果可以打一手漂亮的随机化搜索,也许当你面对一筹莫展的神仙题时就有一把趁手的兵器了. 这篇题解将教你什么?SA的基本思路 ...
- 牛客 Fruit Ninja 2018 ACM 上海大都会赛 (随机化算法)
题目链接:Fruit Ninja 比赛链接:2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 题目描述 Fruit Ninja is a juicy action game enjoyed ...
- poj 3318 Matrix Multiplication 随机化算法
方法1:暴力法 矩阵乘法+优化可以卡时间过的. 方法2:随机化 随机构造向量x[1..n],则有xAB=xC;这样可以将小运算至O(n^2). 代码如下: #include<iostream&g ...
- 数学(矩阵乘法,随机化算法):POJ 3318 Matrix Multiplication
Matrix Multiplication Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17783 Accepted: ...
随机推荐
- 堆参数-XMS 与-XMX的说明
XMS : JVM初始分配的堆内存 XMX : JVM最大允许分配的堆内存,按需分配 堆内存分配: JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64: JVM最大分配的堆内存由-Xmx指 ...
- Unity坐标系统
Unity使用了几种不同的坐标系统,分别如下: 1.屏幕坐标(Screen Space):屏幕坐标是以像素来定义的,以屏幕左下角为(0, 0)点,右上角为(Screen.width, Screen.h ...
- jquery 根据文内内容获取dom
$("table tr td:contains(5)")
- vscode中将本地数据push至git repository
1.新建repository 2.本地写好的代码 3.执行git init 初始化git配置文件 4.提交已暂存文件 5.填写提交信息 6.执行push命令 7.完成
- 获取第三方软件的包名、入口Activity的类名
要启动指定的第三方软件,需要知道第三方软件的包名.类名. 获取第三方软件包名.类名的两种方法: 1.使用aapt aapt是sdk自带一个工具,在 Sdk\builds-tools 目录下 .如果没有 ...
- jq获取设置选中值
var standard = $('input[name="standard"]:checked').val(); $("input[name='advertByid'] ...
- OpenJudge_2757:最长上升子序列
描述一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1 ...
- swift中的as?和as!
as操作符用来把某个实例转型为另外的类型,由于实例转型可能失败,因此Swift为as操作符提供了两种形式:选项形式as?和强制形式as 选项形式(as?)的操作执行转换并返回期望类型的一个选项值,如果 ...
- 解决浏览器自动填充input
浏览器输入框自动填充解决办法 emmmmm:今天处理公司后台系统遇到的:登录页面浏览器保存账号密码后:浏览器会自动在其他页面进行填充:解决如下图: 浏览器会默认填充input type值为passwo ...
- js实现音量拖拽的效果模拟
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>js ...