BNU 34974 MATLAB大法好
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=34974
MATLAB大法好
MATLAB大法好。天灭C++,退C保平安,人在做,天在看,大段循环留祸患,内存泄露电脑灭,跳出递归保平安。
诚心诚念矩阵好,批量操作平安保,两行代码问题解,算法查错有保障。
众生都是码农命,老板PUSH忘前缘。MATLAB弟子说真相。教你脱险莫拒绝。上网搜索九评Bjarne Stroustrup。有*真*相。
大家都知道,用MATLAB做矩阵计算是很方便的。
比方你想算矩阵A的转置AT(即将A矩阵行列对调,元素aij变为aji),仅仅需敲A’ 就可以,而在C或C++中。你必须写循环或者——什么都不用做。再比方你想对A中的每一个元素都加1。在MATLAB中能够轻松地写作A.+1,而在C或C++中,你照样要写循环。
如今定义一个矩阵运算
:
假设A是一个 m × n 的矩阵,而B是一个 p × q 的矩阵,那么
则是一个 mp × nq 的矩阵:

现给出矩阵A、B,求(A
B)((AT).+1
(BT).+1)。当中,前两个括号之间表示正常的矩阵乘法,
的运算优先级最低。
Input
第一行为数据组数t(t<=10)。
接下来。对每组数据:
第一行为4个整数m,n,p,q,1<=m,n,p,q<=50,分别代表矩阵A、B的行、列数。接下来为依照行列的2个矩阵A,B。矩阵元素为大小不超过100的非负整数。
Output
依照行列顺序输出结果矩阵。行内元素之间由空格隔开,行末无空格。
Sample Input
2
1 1 1 1
1
1
1 2 2 2
1 0
1 2
0 1
Sample Output
4
16 10
6 4
分析:昨天比赛的时候写了一下,超时了。
今天又看了一下,发现
(A
B)((AT).+1
(BT).+1)
= [ A * ( (AT).+1)
]
[ B
* ( (BT).+1)]。
这样经过转化就好写了。
#include<stdio.h>
#define N 55
#define M 2550
typedef long long LL;
LL a[N][N], b[N][N], A[N][N], B[N][N];
LL ans[M][M];
int main()
{
int t, m, n, p, q, i, j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&m,&n,&p,&q);
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
scanf("%lld", &a[i][j]);
for(i = 0; i < p; i++)
for(j = 0; j < q; j++)
scanf("%lld", &b[i][j]);
for(i = 0; i < m; i++)
for(j = 0; j < m; j++)
{
A[i][j] = 0;
for(int x = 0; x < n; x++)
A[i][j] += a[i][x] * (a[j][x] + 1);
}
for(i = 0; i < p; i++)
for(j = 0; j < p; j++)
{
B[i][j] = 0;
for(int x = 0; x < q; x++)
B[i][j] += b[i][x] * (b[j][x]+1);
}
for(i = 0; i < m*p; i++)
for(j = 0; j < m*p; j++)
{
int x = i / p;
int y = j / p;
int yy = j % p;
int xx = i % p;
ans[i][j] = A[x][y] * B[xx][yy];
}
for(i = 0; i < m * p; i++)
{
for(j = 0; j < m*p - 1; j++)
printf("%lld ",ans[i][j]);
printf("%lld\n",ans[i][j]);
}
}
return 0;
}
BNU 34974 MATLAB大法好的更多相关文章
- MATLAB 的 cell 大法(单元格数组)
MATLAB 的 cell,称单元格数组 or 元胞数组:使用频率特别高,甚至比 struct 结构体还高. MATLAB文档给出的 cell 官方定义: A cell array is a coll ...
- matlab练习程序(螺线拟合)
这里待拟合的螺线我们选择阿基米德螺线,对数螺线类似. 螺线的笛卡尔坐标系方程为: 螺线从笛卡尔坐标转为极坐标方程为: 阿基米德螺线在极坐标系下极径r和极角theta为线性关系,方程为: 计 ...
- Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)
https://blog.csdn.net/u011574296/article/details/72956446: Windows下对文件夹下所有图片批量重命名(附C++,python,matlab ...
- Connect() 2016 大会的主题 ---微软大法好
文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab slice方法和包络法绘制三维立体图
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab 高斯_拉普拉斯滤波器处理医学图像
前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...
- MATLAB中绘制质点轨迹动图并保存成GIF
工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...
- linux下配置matlab运行环境(MCR)
在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...
随机推荐
- HDU 1754 I Hate It【线段树 单点更新】
题意:给出n个数,每次操作修改它的第s个数,询问给定区间的数的最大值 把前面两道题结合起来就可以了 自己还是敲不出来------------- #include<iostream> #in ...
- css 遮照镂空效果
实现这个效果有以下几种方式.(欢迎指出不足之处!!!) 一:最简单最粗暴的方法!截图! 实现原理:先截一张图片,然后写一个遮罩层,再把图片放上去就可以了! 过程过于简单,就别写代码跟截图效果了! 优 ...
- HDU 2196 Computer(经典树形DP)
题意自己看(猜) 题解 这题很经典,就是记录dp[i][0/1/2]分别代表,从i点向下最大和次大深度,和向上最大深度. 然后转移就行了. 我的写法可能太丑了.死活调不出来,写了一个漂亮的 #incl ...
- Java 学习(11): 面向对象编程—继承(super,this)
Java 继承 what: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为.子类从它的父类中继承可访问的数据域和方法,也 ...
- Redis加入Centos Linux开机启动
Redis加入Centos Linux开机启动 网上有很多redis在linux下自动启动的例子,实现的方式很多,很多都是参考一个老外流传出来启动的例子,其实直接使用是不行,而且有很多地方有一些语法错 ...
- A. Ilya and Diplomas( Codeforces Round #311 (Div. 2) )
A. Ilya and Diplomas time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Insert Data with C# Driver
https://docs.mongodb.com/getting-started/csharp/insert/ OverView You can use the InsertOneAsync meth ...
- hdoj--2138--How many prime numbers(暴力模拟)
How many prime numbers Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- LBP(Local Binary Patterns)局部二进制模式
1. LBP 用于人脸识别 为了预测每个像素属于哪个脸部器官(眼睛.鼻子.嘴.头发),通常的作法是在该像素周围取一个小的区域,提取纹理特征(例如局部二值模式),再基于该特征利用支持向量机等浅层模型分类 ...
- C++字节对齐与结构体大小计算
转载注明出处:http://pppboy.blog.163.com/blog/static/30203796201082494026399/ 感谢原创博主的辛勤成果. 说明: 结构体的sizeof值, ...