当前位置: 首页 > news >正文

CF #367 DIV2 E

直接使用指针,交换时交换矩阵周围的指针即可。

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int N = 1005;

struct dl{
	int v;
	struct dl *d, *r;
}e[N][N];

int main(){
	int n, m , q;
	scanf("%d%d%d", &n, &m, &q);
	int x, y, s, t, h, w;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++)
			scanf("%d", &e[i][j].v);
	}
	
	for(int i = 0; i <= n; i++){
		for(int j = 0; j <= m; j++){
			e[i][j].r = &e[i][j + 1];
			e[i][j].d = &e[i + 1][j];
		}
	}

	for(int i = 1; i <= q; i++){
		scanf("%d%d%d%d%d%d", &x, &y, &s, &t, &h, &w);
		dl *pos1, *pos2;
		pos2 = pos1 = &e[0][0];
		int th = h, tw = w;
		while(-- x) pos1 = pos1 -> d;
		while(-- y) pos1 = pos1 -> r;
		th = h, tw = w;
		while(-- s) pos2 = pos2 -> d;
		while(-- t) pos2 = pos2 -> r;
		
		dl* tp1 = pos1, *tp2 = pos2;
		
		for(int r = 1; r <= h; r++){
			pos1 = pos1 -> d;
			pos2 = pos2 -> d;
			swap(pos1 -> r, pos2 -> r);
		}
		
		for(int c = 1; c <= w; c++){
			pos1 = pos1 -> r;
			pos2 = pos2 -> r;
			swap(pos1 -> d, pos2 -> d);
		}
		
		for(int c = 1; c <= w; c++){
			tp1 = tp1 -> r;
			tp2 = tp2 -> r;
			swap(tp1 -> d, tp2 -> d);
		}
		
		for(int r = 1; r <= h; r ++){
			tp1 = tp1 -> d;
			tp2 = tp2 -> d;
			swap(tp1 -> r, tp2 -> r);
		}
	}
	
	dl *pos1 = &e[0][0];
	
	for(int i = 1; i <= n; i++){
		pos1 = pos1 -> d;
		dl *tmp = pos1;
		for(int j = 1; j <= m; j++){
			pos1 = pos1 ->r;
			if(j == 1)
			printf("%d", pos1 ->v);
			else printf(" %d", pos1 ->v);
		}
		puts("");
		pos1= tmp;
	}
	
	

	return 0;
}

  

转载于:https://www.cnblogs.com/jie-dcai/p/5774153.html

相关文章:

  • dl标签和table标签
  • sql 分割字符串 存储过程
  • GUI之绘画控制
  • jmc远程监控java服务
  • 制作根文件系统的经验
  • SharePoint UserProfileService 接口列表 注解
  • Liferay 6.2 改造系列之二十二:如何发布WAR包
  • 关于投资那些事
  • FreeRTOS下的串口编程
  • YII2.0邮箱发送
  • 格式是否正确输入年、月、日判断
  • Learn GIT
  • Redis常用命令入门4:集合类型
  • 工作反思
  • 特殊数列的求和
  • [译] React v16.8: 含有Hooks的版本
  • 【翻译】babel对TC39装饰器草案的实现
  • 【译】理解JavaScript:new 关键字
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 3.7、@ResponseBody 和 @RestController
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • es的写入过程
  • Java多线程(4):使用线程池执行定时任务
  • Python进阶细节
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue学习系列(二)vue-cli
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 高度不固定时垂直居中
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 数据结构java版之冒泡排序及优化
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #pragam once 和 #ifndef 预编译头
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (三分钟)速览传统边缘检测算子
  • (转)ObjectiveC 深浅拷贝学习
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Core中的去虚
  • .Net Web项目创建比较不错的参考文章
  • .net 反编译_.net反编译的相关问题
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [ linux ] linux 命令英文全称及解释
  • [20161101]rman备份与数据文件变化7.txt
  • [Electron]ipcMain.on和ipcMain.handle的区别
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [hdu 4405] Aeroplane chess [概率DP 期望]