大意: 给定矩阵, q个操作, 每次选两个子矩阵交换, 最后输出交换后的矩阵

双向十字链表模拟就行了

const int N = 1500;
int n, m, q;
struct _ {
int v,l,r,u,d;
} f[N*N];
int ans[N][N];
int has(int i,int j) {return 1010*(i+2)+(j+2);}
int get(int i,int j) {
int r = f[has(0,j)].d;
REP(k,1,i-1) r=f[r].d;
return r;
} void pr() {
REP(j,1,m) {
int x = get(1,j);
REP(i,1,n) ans[i][j]=f[x].v,x=f[x].d;
}
REP(i,1,n) {
REP(j,1,m) printf("%d ", ans[i][j]);hr;
}
} int main() {
scanf("%d%d%d", &n, &m, &q);
REP(i,1,n) REP(j,1,m) {
_ &t = f[has(i,j)];
scanf("%d", &t.v);
t.l=has(i,j-1);
t.r=has(i,j+1);
t.u=has(i-1,j);
t.d=has(i+1,j);
}
REP(i,1,m) {
f[has(0,i)].d=has(1,i);
f[has(n+1,i)].u=has(n,i);
}
REP(i,1,n) {
f[has(i,m+1)].l=has(i,m);
f[has(i,0)].r=has(i,1);
}
REP(i,1,q) {
int a, b, c, d, h, w;
scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &h, &w);
int x = get(a,b), y = get(c,d);
REP(i,1,w) {
swap(f[f[x].u].d,f[f[y].u].d);
swap(f[x].u,f[y].u);
if (i!=w) x = f[x].r, y = f[y].r;
}
REP(i,1,h) {
swap(f[f[x].r].l,f[f[y].r].l);
swap(f[x].r,f[y].r);
if (i!=h) x = f[x].d, y = f[y].d;
}
REP(i,1,w) {
swap(f[f[x].d].u,f[f[y].d].u);
swap(f[x].d,f[y].d);
if (i!=w) x = f[x].l, y = f[y].l;
}
REP(i,1,h) {
swap(f[f[x].l].r,f[f[y].l].r);
swap(f[x].l,f[y].l);
x = f[x].u, y = f[y].u;
}
}
pr();
}

Working routine CodeForces - 706E (链表)的更多相关文章

  1. 【链表】【模拟】Codeforces 706E Working routine

    题目链接: http://codeforces.com/problemset/problem/706/E 题目大意: 给一个N*M的矩阵,Q个操作,每次把两个同样大小的子矩阵交换,子矩阵左上角坐标分别 ...

  2. CodeForces 706E Working routine

    十字链表. 开一个十字链表,矩阵中每一格作为一个节点,记录五个量: $s[i].L$:$i$节点左边的节点编号 $s[i].R$:$i$节点右边的节点编号 $s[i].U$:$i$节点上面的节点编号 ...

  3. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem C (Codeforces 828C) - 链表 - 并查集

    Ivan had string s consisting of small English letters. However, his friend Julia decided to make fun ...

  4. 【CodeForces706E】Working routine(二维链表)

    BUPT2017 wintertraining(15) #6B 题意 q次操作,每次把两个给定子矩阵交换,求最后的矩阵.(2 ≤ n, m ≤ 1000, 1 ≤ q ≤ 10 000) 题解 用R[ ...

  5. Codeforces Round #367 (Div. 2) 套题

    吐槽:只能说是上分好场,可惜没打,唉 A:Beru-taxi (水题,取最小值) #include <cstdio> #include <cstring> #include & ...

  6. Magolor的数据结构作业

    \(CodeForces 706E ~Working routine\) 给出一个矩阵,每次操作交换两个子矩阵,求最后状态. 使用链表存储,每次交换后,影响到的之后矩阵边缘的指针,暴力修改. \(~~ ...

  7. 十字链表 Codeforces Round #367 E Working routine

    // 十字链表 Codeforces Round #367 E Working routine // 题意:给你一个矩阵,q次询问,每次交换两个子矩阵,问最后的矩阵 // 思路:暴力肯定不行.我们可以 ...

  8. [cf div 2 706E] Working routine

    [cf div 2 706E] Working routine Vasiliy finally got to work, where there is a huge amount of tasks w ...

  9. Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor (链表)

    题目链接:http://codeforces.com/contest/670/problem/E 给你n长度的括号字符,m个操作,光标初始位置是p,'D'操作表示删除当前光标所在的字符对应的括号字符以 ...

随机推荐

  1. linux常用命令:systemctl 命令

    systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 1.命令格式: systemctl [参数] [服务] 2.命令功能: syst ...

  2. python练习题-简单方法判断三个数能否组成三角形

    python简单方法判断三个数能否组成三角形 #encoding=utf-8 import math while True: str=raw_input("please input thre ...

  3. P1661 扩散

    P1661 扩散 二分+最小生成树(kruskal使用并查集) 不清楚的题意导致我被坑了qwq,其实间接联通也是允许的.所以可以使用并查集+最小生成树维护 每次二分答案,然后跑一遍最小生成树判断是否联 ...

  4. 20145101《Java程序设计》第9周学习总结

    20145101<Java程序设计>第9周学习总结 教材学习内容总结 第十六章 整合数据库 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增 ...

  5. 超频真的不难!G3258超频4.5GHz全攻略

    奔腾G3258搭配主板详解 [pconline 应用]目前DIY市场上最火热的装机组合莫过于奔腾20周年纪念版处理器G3258搭配B85芯片组主板,只要通过适当的超频,相对较低投入也能来不错的性能体验 ...

  6. 【javascript】数据结构-链表

    // 创建一个链表 function LinkedList(){ // 创建一个Node辅助类,表示需要加入列表的项,它包含一个element属性,即表示需要加入到列表中的值,next属性表示指向下一 ...

  7. sql逻辑查询语句的执行顺序

    SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN ...

  8. bootstrap的 附加导航Affix导航 (侧边窄条式 滚动监控式导航) 附加导航使用3.

    affix: 意思是粘附, 附着, 沾上. 因此, 附加导航就是 bootstrap的 Affix.js组件. bootstrap的 附加导航, 不是说导航分成主导航, 或者什么 副导航的 而是指, ...

  9. Is it bad to rely on foreign key cascading? 外键 级联操作

    Is it bad to rely on foreign key cascading? I'll preface前言 this by saying that I rarely delete rows ...

  10. 同步TreeView中父结点和子结点的状态[以及Treeview的bug]

    此代码仅仅是二级结点,即父结点下面只有一层子结点,只有两层结构 /// <summary> /// 某个结点的CheckBox被选中 /// </summary> /// &l ...