Description

Input

Output

Sample Input

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

Sample Output

d d c c
d d c c
b b a a
b b a a

Data Constraint

Solution

  • 一道模拟题,但是交换矩阵不能暴力交换——时间不允许。

  • 于是用四向链表维护一个点的四个方向的点是什么,

  • 交换时维护矩阵边缘的点的指针即可。

  • 注意: 读入的字符串长度可能长短不一,开三维数组存会爆内存,用一个 VectorVector 存即可。

Code

#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1002;
struct data
{int v,u,d,l,r;
}a[N*N];
int tot;
int f[N][N];
vector<int>s[N*N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
int main()
{int n=read(),m=read(),q=read();for(int i=0;i<=n+1;i++){for(int j=0;j<=m+1;j++){f[i][j]=i*(m+2)+j;if(i>=1 && i<=n && j>=1 && j<=m){char ch=getchar();while(!(ch>='a' && ch<='z')) ch=getchar();while(ch>='a' && ch<='z') s[f[i][j]].push_back(ch),ch=getchar();}a[f[i][j]].u=f[i-1][j];a[f[i-1][j]].d=f[i][j];a[f[i][j]].l=f[i][j-1];a[f[i][j-1]].r=f[i][j];a[f[i][j]].v=f[i][j];}}while(q--){int x1=read(),y1=read();int x2=read(),y2=read();int l=read(),c=read();int z1=a[1].d,z2=a[1].d;for(int i=2;i<=x1;i++) z1=a[z1].d;for(int i=2;i<=y1;i++) z1=a[z1].r;for(int i=2;i<=x2;i++) z2=a[z2].d;for(int i=2;i<=y2;i++) z2=a[z2].r;for(int i=0,x=a[z1].l,y=a[z2].l;i<l;i++,x=a[x].d,y=a[y].d) swap(a[x].r,a[y].r);for(int i=0,x=a[z1].u,y=a[z2].u;i<c;i++,x=a[x].r,y=a[y].r) swap(a[x].d,a[y].d);int p=a[z1].l,q=a[z2].l;for(int i=1;i<=c;i++) p=a[p].r,q=a[q].r;for(int i=0;i<l;i++,p=a[p].d,q=a[q].d) swap(a[p].r,a[q].r);p=a[z1].u,q=a[z2].u;for(int i=1;i<=l;i++) p=a[p].d,q=a[q].d;for(int i=0;i<c;i++,p=a[p].r,q=a[q].r) swap(a[p].d,a[q].d);p=z1,q=z2;for(int i=0;i<l;i++,p=a[p].d,q=a[q].d) swap(a[p].l,a[q].l);p=z1,q=z2;for(int i=1;i<=c;i++) p=a[p].r,q=a[q].r;for(int i=0;i<l;i++,p=a[p].d,q=a[q].d) swap(a[p].l,a[q].l);p=z1,q=z2;for(int i=0;i<c;i++,p=a[p].r,q=a[q].r) swap(a[p].u,a[q].u);p=z1,q=z2;for(int i=1;i<=l;i++) p=a[p].d,q=a[q].d;for(int i=0;i<c;i++,p=a[p].r,q=a[q].r) swap(a[p].u,a[q].u);}for(int i=a[1].d,p=1;p<=n;p++,i=a[i].d,putchar('\n'))for(int j=i,q=1;q<=m;q++,j=a[j].r,putchar(' '))for(int k=0;k<s[j].size();k++) putchar(s[j][k]);return 0;
}

JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点相关推荐

  1. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  2. 【二分,找规律】Day 14 提高组模拟C组 T1 小麦亩产一千八

    题目大意 给定斐波那契的第aaa项,求出第b" role="presentation">bbb项,默认第0项为1 解题思路 方法一:递推 找到规律后O(b)O(b) ...

  3. JZOJ 5814. 【NOIP提高A组模拟2018.8.14】 树

    梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地选择一条走过去, ...

  4. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  5. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  6. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  7. {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C

    2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...

  8. 2021.01.14【NOIP提高B组】模拟 总结

    2021.01.14[NOIP提高B组]模拟 总结 第一题 Candy 奇奇怪怪的题目. 一开始没有理解题目,其实就是同时变换. 打了一个暴力. 本人随机生成50000组数据,都过了,时间没超.希望出 ...

  9. 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结

    2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...

最新文章

  1. SourceTree 教程文档(了解界面)
  2. leetcode 101 Symmetric Tree
  3. html标记什么规定applet,HTML applet 标签
  4. 手写java数据库连接池,自定义实现数据库连接池,兼容springboot
  5. 在JAX-RS中使用@Context [第1部分]
  6. 深入浅出的webpack4构建工具--webpack4+react构建环境(二十)
  7. 关于线程的执行顺序,可能真的只是你以为的你以为
  8. phoenixframework 自动化测试平台 1.4.8 版本发布
  9. Python计算器练习
  10. 容器中Bean的生命周期
  11. dwz 之 IE下 页面加载完了却一直提示数据加载中,请稍等...
  12. 如何连接到sqlplus
  13. 什么是CIF/4CIF/QCIF/D1
  14. aardio匹配问题以及编码问题
  15. 硬盘安装archlinux
  16. java Double去掉科学计数E
  17. 超高性价比——DIY 斯坦福Pupper机器狗
  18. 俞渝年轻图片_组图:2007中国职场女性榜样-俞渝
  19. sendgrid html text,用sendgrid发邮件
  20. MIT又出新玩法,利用AI可轻松分离视频中的乐器声音

热门文章

  1. Python学习笔记:Io编程序列化
  2. 5.6 图像颜色映射
  3. android外置传感器,Android中外接键盘的检测的实现
  4. php laravel 排序,php – 在laravel中排序数组
  5. Unity3D与Leap motion连接学习记录
  6. 【Python】find()函数居然还能指定搜索的起点和终点?
  7. 组会PPT20201030《复现chen结果及初始密度影响》
  8. [云炬创业基础笔记]第十一章创业计划书测试9
  9. [云炬创业基础笔记] 第四章测试14
  10. 云炬60s看世界20211116