【扬中集训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( ...
随机推荐
- MySQL 5.6.20-4 and Oracle Linux DTrace
https://blogs.oracle.com/wim/entry/mysql_5_6_20_4?utm_source=tuicool&utm_medium=referral By WimC ...
- How to Install a Language Pack
https://www.phpbb.com/kb/article/how-to-install-a-language-pack
- jmeter.properties控制聚合报告的用户响应时间设置和smmary results
jmeter.properties的配置Summariser控制输出Summary Results,可以显式rt和tps等信息 Aggregate Report配置可以控制聚合报告的内容,控制90%用 ...
- 浏览器g.xxx333xxx.com 跳转2345问题解决方法
近期升级windows10系统我,我顺手在浏览器输入"windows10"激活keyword,下载了小马激活工具进行了激活.例如以下图. 下载安装后.浏览器每次打开强制跳转到234 ...
- RBtree插入跟删除图解代码
一.红黑树的简单介绍 RBT 红黑树是一种平衡的二叉查找树.是一种计算机科学中经常使用的数据结构,最典型的应用是实现数据的关联,比如map等数据结构的实现. 红黑树有下面限制: 1. 节 ...
- Linux下的ELF可执行文件的格式解析 (转)
LInux命令只是和Kernel一起被编译进操作系统的存在于FS的ELF格式二进制文件,或者权限足够的脚本,或者一个软链 ELF(Executable and Linking Format)是一种对象 ...
- EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体server,EasyPlayer手机播放器
在不断进行EasyDarwin开源流媒体server的功能和性能完好的同一时候,我们也配套实现了眼下在安防和移动互联网行业比較火热的移动端手机直播方案,主要就是我们的 EasyPusher直播推送项目 ...
- iOS 相似淘宝商品详情查看翻页效果的实现
基本思路: 1.设置一个 UIScrollView 作为视图底层,而且设置分页为两页 2.然后在第一个分页上加入一个 UITableView 而且设置表格可以上提载入(上拉操作即为让视图滚动到下一页) ...
- CustomView
https://github.com/eltld/CustomView
- 使用ViewPager多页面滑动切换以及动画效果
https://github.com/eltld/Viewpager