【扬中集训DAY5T1】 交换矩阵
【题目链接】
【算法】
链表,对于每个点,存它的上,下,左,右分别是谁
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000 struct node {
int val;
node *l,*r,*u,*d;
} mat[MAXN+][MAXN+]; int i,j,x,N,M,Q,A,B,C,D,H,W;
node *pos; template <typename T> inline void read(T &x) {
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = x * + c - '';
x *= f;
} template <typename T> inline void write(T x) {
if (x < ) { x = -x; putchar('-'); }
if (x > ) write(x/);
putchar(x%+'');
} template <typename T> inline void writeln(T x) {
write(x);
puts("");
} inline void modify(int X1,int Y1,int X2,int Y2,int W,int H) {
int i;
node *pos1,*pos2,*tmp1,*tmp2;
pos1 = &mat[X1][]; pos2 = &mat[X2][];
for (i = ; i <= Y1; i++) pos1 = pos1 -> r;
for (i = ; i <= Y2; i++) pos2 = pos2 -> r;
tmp1 = pos1; tmp2 = pos2;
for (i = ; i <= W; i++) {
tmp1 -> l -> r = tmp2;
tmp2 -> l -> r = tmp1;
swap(tmp1->l,tmp2->l);
tmp1 = tmp1 -> d; tmp2 = tmp2 -> d;
}
tmp1 = pos1; tmp2 = pos2;
for (i = ; i < H; i++) tmp1 = tmp1 -> r;
for (i = ; i < H; i++) tmp2 = tmp2 -> r;
for (i = ; i <= W; i++) {
tmp1 -> r -> l = tmp2;
tmp2 -> r -> l = tmp1;
swap(tmp1->r,tmp2->r);
tmp1 = tmp1 -> d; tmp2 = tmp2 -> d;
}
tmp1 = pos1; tmp2 = pos2;
for (i = ; i <= H; i++) {
tmp1 -> u -> d = tmp2;
tmp2 -> u -> d = tmp1;
swap(tmp1->u,tmp2->u);
tmp1 = tmp1 -> r; tmp2 = tmp2 -> r;
}
tmp1 = pos1; tmp2 = pos2;
for (i = ; i < W; i++) tmp1 = tmp1 -> d;
for (i = ; i < W; i++) tmp2 = tmp2 -> d;
for (i = ; i <= H; i++) {
tmp1 -> d -> u = tmp2;
tmp2 -> d -> u = tmp1;
swap(tmp1->d,tmp2->d);
tmp1 = tmp1 -> r; tmp2 = tmp2 -> r;
}
} int main() { read(N); read(M); read(Q);
for (i = ; i <= ; i++) {
for (j = ; j <= ; j++) {
mat[i][j].r = &mat[i][j+];
mat[i][j].d = &mat[i+][j];
mat[i][j].l = &mat[i][j-];
mat[i][j].u = &mat[i-][j];
}
}
for (i = ; i <= N; i++) {
for (j = ; j <= M; j++) {
read(x);
mat[i][j].val = x;
}
} while (Q--) {
read(A); read(B); read(C); read(D); read(H); read(W);
modify(A,B,C,D,H,W);
} for (i = ; i <= N; i++) {
pos = mat[i][].r;
for (j = ; j <= M; j++) {
write(pos->val);
if (j != M) putchar(' ');
pos = pos -> r;
}
puts("");
} return ;
}
【扬中集训DAY5T1】 交换矩阵的更多相关文章
- 【扬中集训DAY2T2】 机智的AmyZhi
[题目链接] 点击打开链接 [算法] 据说标算是暴力? 从N-200开始搜 不过我用了搜索+一些奇怪的剪枝,也A了.... [代码] 标程 #include<bits/stdc++.h> ...
- 【扬中集训 DAY4T3】holiday
[题目链接] 点击打开链接 [算法] 建C棵线段树即可,注意要用前缀和优化 [代码] 这是标程 #include <bits/stdc++.h> using namespace std; ...
- 【扬中集训 DAY4T1】跳马
[题目链接] 点击打开链接 [算法] 数据范围很大,显然暴力是不能通过的 我们可以先打表,发现答案为 : 41 109 205 325 473 649 853 1085 1345 观察数列的差 68 ...
- 【扬中集训DAY1T1】 微信群
[题目链接] 点击打开链接 [算法] 对问题稍加分析后,发现其实要求的就是 : C(N,K) + C(N,K+1) + C(N,K+2) + ... + C(N,N) 因为N最大10^9,K最大10^ ...
- 【扬中集训Day6T1】 白日梦
[题目描述] 白日梦 (daydream.c/cpp/pas) 时间限制: 1 s 空间限制: 256 MB 题目描述 SR需要相当大的睡眠量 某日,他做了一个奇怪的梦,他梦见自己成为了怪物猎人,为 ...
- HDU5671Matrix(矩阵行列交换)
有一个nn行mm列的矩阵(1 \leq n \leq 1000 ,1 \leq m \leq 1000 )(1≤n≤1000,1≤m≤1000),在这个矩阵上进行qq (1 \leq q \leq 1 ...
- DirectX 矩阵
基础: 下标:第一个下标为该元素所在行的索引,第二个下标为该元素所在列的索引.如下图所示 行向量和列向量:只有单行的向量称为行向量,只有单列的称之为列向量. 相等 维数和元素都相等 数乘(与标量相乘) ...
- 线性代数-矩阵-【1】矩阵汇总 C和C++的实现
矩阵的知识点之多足以写成一本线性代数. 在C++中,我们把矩阵封装成类.. 程序清单: Matrix.h//未完待续 #ifndef _MATRIX_H #define _MATRIX_H #incl ...
- 有关CUBLAS中的矩阵乘法函数
关于cuBLAS库中矩阵乘法相关的函数及其输入输出进行详细讨论. ▶ 涨姿势: ● cuBLAS中能用于运算矩阵乘法的函数有4个,分别是 cublasSgemm(单精度实数).cublasDgemm( ...
随机推荐
- 关于傅里叶变换NTT(FNT)的周边
NTT:快速数论变化,对于FFT精度减少的情况,NTT可以避免但是会慢一点,毕竟是数论有Mod,和快速米 引用:http://blog.csdn.net/zz_1215/article/details ...
- MySQL安装总是失败,提示缺少Visual Studio 2013 Redistributable
MySQL安装总是失败,提示缺少Visual Studio 2013 Redistributable,但是很疑惑,我明明已经安装了呀,原来问题出在版本上,以下提供了一个可以匹配新版本mysql的版本: ...
- linux 文件属性、权限、所有人、所属组
Linux命令行模式下,文件还是需要通过ls -l来查看 可以通过ll查看长文件,会有如下类型显示drwxr-xr-x 2 root root 4096 Nov 10 2010 conf 总共有7 ...
- 【数据库摘要】6_Sql_Inner_Join
INNER JOIN 操作符 INNER JOIN keyword在表中存在至少一个匹配时返回行. SQL INNER JOIN 语法 SELECT column_name(s) FROM table ...
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...
- 关于 redux-saga 中 take 使用方法详解
本文介绍了关于redux-saga中take使用方法详解,分享给大家,具体如下: 带来一个自己研究好久的API使用方法. redux-saga中effect中take这个API使用方式,用的多的是ca ...
- HDU 1312 Red and Black 第一题搜索!
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 各种加载效果,适合做加载loading动画效果 Eclipse版
Animation.rar 链接: http://pan.baidu.com/s/1c0QkOz2 密码: kd57
- CentOS7虚拟机桥接设置及问题
转载请注明出处:jiq•钦's technical Blog 今天在VMWare WorkStation9中安装了CentOS7虚拟机. 虚拟机与宿主机网络连接有三种方式:桥接模式.NAT模式和Ho ...
- JavaScript重点记忆
String的常用方法 indexOf() 返回字符串中检索指定字符第一次出现的位置 lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置 match() 找到一个或多个正则表达式的 ...