博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2014 HDU多校弟五场J题 【矩阵乘积】
阅读量:4618 次
发布时间:2019-06-09

本文共 2139 字,大约阅读时间需要 7 分钟。

题意很简单,就是两个大矩阵相乘,然后求乘积。

用  的话,当N的规模达到100左右就会StackOverFlow了

况且输入的数据范围可达到800,如果变量还不用全局变量的话连内存开辟都开不出来

1 #pragma comment(linker, "/STACK:16777216")  2 #include 
3 #include
4 #define ll long long 5 using namespace std; 6 7 const int N=801; //常量N用来定义矩阵的大小 8 int A[N][N],B[N][N],C[N][N]; //定义三个矩阵A,B,C 9 int A11[N][N],A12[N][N],A21[N][N],A22[N][N]; 10 int B11[N][N],B12[N][N],B21[N][N],B22[N][N]; 11 int C11[N][N],C12[N][N],C21[N][N],C22[N][N]; 12 int M1[N][N],M2[N][N],M3[N][N],M4[N][N],M5[N][N],M6[N][N],M7[N][N]; 13 int AA[N][N],BB[N][N],MM1[N][N],MM2[N][N]; 14 15 void input(int n,int p[][N]) //矩阵输入函数 16 { 17 int i,j; 18 19 for(i=0;i
>p[i][j]; 23 p[i][j] %= 3; 24 } 25 } 26 27 void output(int n,int C[][N]) //据矩阵输出函数 28 { 29 int i,j; 30 for(i=0;i
C 44 for(j=0;j<2;j++) 45 { 46 C[i][j]=0; //计算完一个C[i][j],C[i][j]应重新赋值为零 47 for(t=0;t<2;t++) 48 C[i][j]=(int)(C[i][j]+A[i][t]*B[t][j]+(int)3)%(int)3; 49 } 50 } 51 52 void MATRIX_ADD(int n,int X[][N],int Y[][N],int Z[][N]) //矩阵加法函数X+Y—>Z 53 { 54 int i,j; 55 for(i=0;i
Z 61 { 62 int i,j; 63 for(i=0;i
> A[i][j];168 A[i][j] %= 3;169 //scanf("%d",&A[i][j]);170 for(i=0; i
> B[i][j];173 B[i][j] %= 3;174 //scanf("%d",&B[i][j]);175 for(i=0;i
Stack Over Flow Code

所有只能考虑一开始肯定会TLE的朴素算法。

想到结果矩阵中只能有三个数,0,1,2

如果存在大量的0,那么就是一个稀疏矩阵,关于稀疏矩阵,我想到:

只需要在第二层循环内,碰到当然数为0则跳过,因为计算结果肯定为0

提交上去。

TLE.....................ORZ

于是开始思考是不是算法的问题,感觉不太科学,过的人也很多,不会太难把。

一直跪到了比赛结束,题说别人也是对稀疏矩阵优化九过了,我在检查了下代码。

发现了一个至关重要的问题,就是我在大规模数据输入输出的时候使用了cin 和 cout 

 

不多说了,贴后来AC的代码:

#pragma comment(linker, "/STACK:16777216")#include 
#include
#define ll long longusing namespace std;const int N=801; //常量N用来定义矩阵的大小int A[N][N],B[N][N],C[N][N]; //定义三个矩阵A,B,Cint main(){ int num; int i,j,k,r; while(scanf("%d",&num)!=EOF){ memset(C, 0, sizeof(C)); for(i=0; i

 

转载于:https://www.cnblogs.com/wushuaiyi/p/3893006.html

你可能感兴趣的文章
SSH创建公钥实现无密码操作失败原因
查看>>
【转】Javascript模块化编程(三):require.js的用法
查看>>
需求规格说明书
查看>>
python mysql 查询返回字典结构
查看>>
mysql 统计sql
查看>>
Java中的抽象类
查看>>
关于Altium Designer的BOM,元件清单
查看>>
使用MongoDB ruby驱动进行简单连接/CRUD/运行命令
查看>>
关于set和multiset的一些用法
查看>>
基础训练 芯片测试
查看>>
如何用命令将本地项目上传到git
查看>>
JavaScript 实现鼠标拖动元素
查看>>
js 模糊查询 (360接口)
查看>>
python+rabbitMQ实现生产者和消费者模式
查看>>
“模态”对话框和“后退”按钮
查看>>
关于javascript实现的网站页面侧边悬浮框"抖动"问题
查看>>
linux_命令格式和命令提示符
查看>>
Cocos2d-X-3.0之后的版本的环境搭建
查看>>
when case group by 的用法集合
查看>>
认识XmlReader
查看>>