【扬中集训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( ...
随机推荐
- FastMM使用详解
FastMM使用详解 一.引言 FastMM 是适用于delphi的第三方内存管理器,在国外已经是大名鼎鼎,在国内也有许多人在使用或者希望使用,就连 Borland 也在delphi2007 ...
- 洛谷——P2074 危险区域
P2074 危险区域 题目背景 一个恐怖组织在一座城市中安放了定时炸弹,其威力巨大,现在这里的警长想知道最坏的情况下会有多少街区受威胁. 题目描述 在一个城市有N*M个街区,每个街区由坐标描述,如图所 ...
- ubuntu下安装翻译软件
原文: http://sixipiaoyang.blog.163.com/blog/static/6232358820144146386437/ Ubuntu下常用的翻译软件有StarDict,Gol ...
- luogu P3512 [POI2010]PIL-Pilots
题目描述 In the Byteotian Training Centre, the pilots prepare for missions requiring extraordinary preci ...
- 使用Maven运行Java main的方法(转)
使用Maven运行Java Main的方法(既Java Application项目),可以有如下方式解决: 1.将Maven项目导入到eclipse中,然后直接项目右键[Run As]->[Ja ...
- 【Todo】已经打开的页面需要清掉的坑
下面是当前我浏览器里面打开的技术文章.需要清掉.一个坑一个坑地填吧. 微信文件传输里面也有几篇12.6号的<Akuna Capital电面面经><2016最流行的Java EE服务器 ...
- 最新的hustoj搭建姿势
试着照某度上的教程搭了一下hustoj,出了一些问题,之前的搭建姿势很多已经不适用了,重新整理一下思路,方法二简单粗暴: 方法一: 首先虚拟机安装了Elementory OS (基于Ubuntu的衍生 ...
- WheelView实现省市区三级联动(数据库实现版本号附带完整SQL及数据)
近期在实现收货地址功能,用到了省市区三级联动效果,网上找到一般都是xml或json.数据源陈旧改动麻烦.改动了一下使用数据库方式实现了一下 数据源解决.因为数据量比較大通过初始化批量运行SQL的方式不 ...
- VS2012,VS2010无法生成dll程序集的解决办法
在我们做项目的时候总会遇到dll程序集无法生成导致各种问题. 通常我们的做法就是清理项目,然后重新生成,或者直接到bin目录下删除所有dll,然后重新生成. 有时候某几个dll就是不生成. 这时候就需 ...
- C#模拟登录Twitter 发送私信、艾特用户、回复评论
这次做成了MVC程序的接口 private static string UserName = "用户名"; private static string PassWord = &qu ...