Gym - 101341I:Matrix God(随机算法)
题意:给出N,以及三个矩阵A,B,C,大小都为N*N。问是否满足A*B=C; N<1000;
思路:由于矩阵乘法的复杂度为O(N^3);而部分验证又不能保证结果正确。我们巧妙地利用矩阵乘法的结合律:使其变为1*N和N*N的矩阵乘法,使复杂度降低为O(N^2); 即随机构造矩阵X(1*N),Y(N*1),那么问题成为验证X*A*B*Y==X*C*Y?然后利用结合律即可验证。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=;
const int Mod=1e9+;
int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];
int r1[maxn],r2[maxn],x1[maxn],x2[maxn],yy1[maxn],ans1,ans2;
int main()
{
int T=,N,i,j;
scanf("%d",&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]);
while(T--){
for(i=;i<=N;i++) r1[i]=rand()%Mod; //1*N
for(i=;i<=N;i++) r2[i]=rand()%Mod; //N*1
for(i=;i<=N;i++) x1[i]=x2[i]=yy1[i]=;
ans1=ans2=;
for(i=;i<=N;i++) //1*N N*N N*N N*1=(1*N)*(N*1)
for(j=;j<=N;j++)
(x1[i]+=(ll)r1[j]*a[j][i]%Mod)%=Mod;
for(i=;i<=N;i++)
for(j=;j<=N;j++)
(x2[i]+=(ll)b[i][j]*r2[j]%Mod)%=Mod;
for(i=;i<=N;i++) (ans1+=(ll)x1[i]*x2[i]%Mod)%=Mod; for(i=;i<=N;i++) //1*N N*N N*1 =(1*N)*(N*1)
for(j=;j<=N;j++)
(yy1[i]+=(ll)r1[j]*c[j][i]%Mod)%=Mod;
for(i=;i<=N;i++) (ans2+=(ll)yy1[i]*r2[i]%Mod)%=Mod;
if(ans1!=ans2){ puts("NO"); return ; }
}
puts("YES"); return ;
}
Gym - 101341I:Matrix God(随机算法)的更多相关文章
- POJ 3318 Matrix Multiplication(随机算法)
题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...
- POJ 3318:Matrix Multiplication(随机算法)
http://poj.org/problem?id=3318 题意:问A和B两个矩阵相乘能否等于C. 思路:题目明确说出(n^3)的算法不能过,但是通过各种常数优化还是能过的. 这里的随机算法指的是随 ...
- 浅浅地谈一下随机算法【poj2454】【poj3318】
随机算法我也只是稍微接触了一下,就是想写篇博客自己稍微总结一下 其实随机算法也算是一个玄学吧,运气不好还是会wa.但是我们知道,计算机可以在短时间内计算大量的数据,所以碰到正确答案的概率还是挺大的. ...
- 微信红包中使用的技术:AA收款+随机算法
除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...
- 抽奖随机算法的技术探讨与C#实现
一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...
- hdu 4712 (随机算法)
第一次听说随机算法,在给的n组数据间随机取两个组比较,当随机次数达到一定量时,答案就出来了. #include<stdio.h> #include<stdlib.h> #inc ...
- 权重随机算法的java实现
一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...
- hdu 4712 Hamming Distance ( 随机算法混过了 )
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- HDU4712+随机算法
随机算法 求n个20位的2进制串的MinDist. Dist:两个串的异或结果中1的个数 /* 随机算法 */ #include<algorithm> #include<iostre ...
- LOJ #2540. 「PKUWC 2018」随机算法(概率dp)
题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...
随机推荐
- 字符串== equals
经常碰到比较字符串的题, eg: public class StringDemo{ private static final String MESSAGE = "taobao"; ...
- java 多参实现
package com.northeasttycoon.monitor.service; import static java.lang.System.out; /** * Created by no ...
- ViewPager总结
https://github.com/youth5201314/banner compile 'com.youth.banner:banner:1.4.9' private void setBanne ...
- iOS 应用发布
本文转载至 http://blog.csdn.net/ysy441088327/article/details/7833579 苹果为广大的开发者提供了一个很好的应用生态环境 参考资料: 1:如何向 ...
- [转]JS学习之正则表达式
js正则表达式实例 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档 ...
- SQL Server 中 GO 的用法(转)
本科里学了那么多年SQL Server一直看到书上各种SQL语句中间夹杂着那么几个看似毫无意义的GO,看着就让人莫名,问老师,老师一般只会告诉你,不要理他,这个东西没用的.但是个性纠结并且有轻微强迫症 ...
- jQuery学习笔记(9)--jquery中的事件--$(document).ready()
1.$(document).ready()方法是事件模块中最重要的一个函数,可以极大地提高web应用程序的相应速度. 2.执行时机:DOM就绪后就会执行,而javascript中window.onlo ...
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
- apache vhosts 虚拟主机设置
编辑vhosts文件:/alidata/server/httpd-2.4.10/conf/extra/httpd-vhosts.conf <VirtualHost *:80> <Lo ...
- php中$t=date()函数参数意义及时间更改
php中date()函数用的最多的是:date('Y-m-d H:i:s', time()); 这里面的参数意义分别是:Y - 年,四位数字; 如: "2016":m - 月份, ...