JZOJ 5281 钦点
样例输入:
4 4 2
a a b b
a a b b
c c d d
c c d d
1 1 3 3 2 2
3 1 1 3 2 2
样例输出:
d d c c
d d c c
b b a a
b b a a
思路:
既然是在矩形里面操作,而且每次移动的是一个整块,同时移动的一对矩形不会相邻
那么就使用一个四向链表模拟矩形,保存每个节点的上下左右节点
实际使用时发现其实双向(向下和向右)就够了
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<string>
using namespace std;
int n,m,q;
struct point{
string v;
int r,d;
}ma[];
int trans(int x,int y){
return y*(m+)+x;
}
int pos(int x,int y){
if (x>y){
int ans=trans(x,);
for (int i=;i<y;i++) ans=ma[ans].d;
return ans;
}
else {
int ans=trans(,y);
for (int i=;i<x;i++) ans=ma[ans].r;
return ans;
}
} int main(){
std::ios::sync_with_stdio(false);
cin>>n>>m>>q;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
if (i&&j) cin>>ma[trans(j,i)].v;
ma[trans(j,i)].r=trans(j+,i);
ma[trans(j,i)].d=trans(j,i+);
} while(q--){
int x1,y1,x2,y2,l,c;
cin>>y1>>x1>>y2>>x2>>l>>c;
int p1=pos(x1-,y1-),p2=pos(x2-,y2-);
int t1=p1,t2=p2;
for(int i=;i<=l;i++){
t1=ma[t1].d;t2=ma[t2].d;
swap(ma[t1].r,ma[t2].r);
}
for(int i=;i<=c;i++){
t1=ma[t1].r;t2=ma[t2].r;
swap(ma[t1].d,ma[t2].d);
}
t1=p1,t2=p2;
for(int i=;i<=c;i++){
t1=ma[t1].r;t2=ma[t2].r;
swap(ma[t1].d,ma[t2].d);
}
for(int i=;i<=l;i++){
t1=ma[t1].d;t2=ma[t2].d;
swap(ma[t1].r,ma[t2].r);
}
}
int p=;
for(int i=;i<=n;i++){
p=ma[p].d;
for(int j=,q=p;j<=m;j++){
q=ma[q].r;
cout<<ma[q].v<<" ";
}
cout<<endl;
}
}
JZOJ 5281 钦点的更多相关文章
- JZOJ.5281【NOIP2017模拟8.15】钦点
Description
- hdu 5281 Senior's Gun
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5281 Senior's Gun Description Xuejiejie is a beautifu ...
- HDU 5281 Senior's Gun (贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5281 贪心题目,但是看看我的博客里边相关贪心的题解实在是少的可怜,这里就写出来供大家一起探讨. 题意还 ...
- (jzoj snow的追寻)线段树维护树的直径
jzoj snow的追寻 DFS序上搞 合并暴力和,记录最长链和当前最远点,距离跑LCA # include <stdio.h> # include <stdlib.h> # ...
- [jzoj]3506.【NOIP2013模拟11.4A组】善良的精灵(fairy)(深度优先生成树)
Link https://jzoj.net/senior/#main/show/3506 Description 从前有一个善良的精灵. 一天,一个年轻人B找到她并请他预言他的未来.这个精灵透过他的水 ...
- [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)
Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...
- [jzoj]5478.【NOIP2017提高组正式赛】列队
Link https://jzoj.net/senior/#main/show/5478 Description Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校 ...
- [jzoj]1115.【HNOI2008】GT考试
Link https://jzoj.net/senior/#main/show/1115 Description 申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=X ...
- [jzoj]2538.【NOIP2009TG】Hankson 的趣味题
Link https://jzoj.net/senior/#main/show/2538 Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫H ...
随机推荐
- Java 集合框架_上
集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的 ...
- 在ListBox控件间交换数据
实现效果: 知识运用: ListBox控件的SelectedItem属性 //获取或设置ListBox控件中当前选定的数据项 public Object SelectedItem{ get;set; ...
- jq中append(),appendTo(),after(),before(),prepend(),prependTo()的用法
1. append():往当前元素的内部的后面追加元素; eg:$("div").append($("span")); 将span放在div内部的后面. 2. ...
- SSM框架快速搭建
1. 新建Maven项目 ssm 2. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...
- python基础一 day17 初识递归
#递归函数 # 了解什么是递归 : 在函数中调用自身函数 # 最大递归深度默认是997/998 —— 是python从内存角度出发做得限制 # 能看懂递归 # 能知道递归的应用场景 # 初识递归 —— ...
- bootstrapValidator 插件
1 有关内容:https://blog.csdn.net/u013938465/article/details/53507109 https://blog.csdn.net/wangtongxue12 ...
- vue学习之路 - 2.基本操作(上)
基本操作(上) 本章节简介: vue的安装 vue实例创建 数据绑定渲染 表单数据双向绑定 事件处理 安装 安装方式有三种: 一.vue官网直接下载 http://vuejs.org/js/vue.m ...
- neo4j 安装
查看 http://ip:7474/browser/
- HTTP 配置与编译安装
目录 HTTP 配置与编译安装 HTTP 相关配置 DSO 定义'Main' Server 的文档页面路径 定义站点主页面 站点访问控制常见机制 基于源地址实现访问控制 日志设定 设定默认字符集 定义 ...
- 十一、Shell 输入/输出重定向
Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...