NOIP2017赛前模拟 Table(双向链表)
来源:互联网 发布:什么是seo及优化方案 编辑:程序博客网 时间:2024/06/05 11:25
题意:
给一个N*M的矩阵,每次交换两个形状完全相同的且互不重叠而且没有公共边界的子矩阵,输出最后结果。
题解:
给每个点挂一个链表记录它右边和下面的点
%%%凯爷 链表大佬
#include<bits/stdc++.h>using namespace std;const int N = 1005;const int MaxN = 1005003;int n,m,q,num,v[MaxN],f[MaxN][5],lab[N][N];inline int Readint(){ register char ch=getchar(); register int x=0; while(!isdigit(ch)) ch=getchar(); while(isdigit(ch)) x=((x+(x<<2))<<1)+ch-'0',ch=getchar(); return x;}inline int getlab(int a,int b){ int p=lab[0][0]; for(register int i=1;i<=a;i++) p=f[p][1]; for(register int i=1;i<=b;i++) p=f[p][0]; return p;}int main(){ freopen("lx.in","r",stdin); n=Readint(),m=Readint(),q=Readint(); for(register int i=1;i<=n;i++) for(register int j=1;j<=m;j++) v[lab[i][j]=++num]=Readint(); for(register int i=0;i<=m+1;i++) lab[0][i]=++num,lab[n+1][i]=++num; for(register int i=1;i<=n;i++) lab[i][0]=++num,lab[i][m+1]=++num; for(register int i=0;i<=n;i++) for(register int j=0;j<=m;j++) f[lab[i][j]][0]=lab[i][j+1],f[lab[i][j]][1]=lab[i+1][j]; for(int a,b,c,d,h,w,i=1;i<=q;i++){ a=Readint(),b=Readint(),c=Readint(); d=Readint(),h=Readint(),w=Readint(); register int p1=getlab(a-1,b-1),p2=getlab(c-1,d-1); register int t1,t2,ww,hh; for(t1=p1,t2=p2,ww=1;ww<=w;ww++) swap(f[t1=f[t1][0]][1],f[t2=f[t2][0]][1]); for(hh=1;hh<=h;hh++) swap(f[t1=f[t1][1]][0],f[t2=f[t2][1]][0]); for(t1=p1,t2=p2,hh=1;hh<=h;hh++) swap(f[t1=f[t1][1]][0],f[t2=f[t2][1]][0]); for(ww=1;ww<=w;ww++) swap(f[t1=f[t1][0]][1],f[t2=f[t2][0]][1]); } for(int i=1,p=lab[0][0];i<=n;i++) { for(int j=1,t=p=f[p][1];j<=m;j++) cout<<v[t=f[t][0]]<<" "; cout<<'\n'; } return 0;}
阅读全文
0 0
- NOIP2017赛前模拟 Table(双向链表)
- NOIP2017 赛前模拟 7.24
- NOIP2017 赛前模拟(2017.10.6)
- NOIP2017赛前模拟 分玩具
- NOIP2017赛前模拟 字符串(AC自动机)
- NOIP2017赛前模拟(2017.10.19)
- NOIP2017赛前模拟(2017.10.20)
- NOIP2017赛前模拟(2017.10.23)
- NOIP2017赛前模拟 Graph (2017.10.24)
- [NOIP2017模拟]table
- NOIP2017赛前模拟 (2017.10.17)考试总结
- NOIP2017 赛前模拟(2017.10.30)考试总结
- NOIP2017赛前模拟 Game DP (2017.10.30)
- NOIP2017赛前模拟 STAR (合理证明复杂度)
- NOIP2017赛前模拟(2017.10.31)考试总结
- NOIP2017赛前模拟 纸袋(并查集)
- NOIP2017 赛前集训
- NOIP2017 赛前总结
- 1.4创建一个被动套接字
- 外网无法访问tomcat-阿里云
- AlphaGo Zero论文中文版:Mastering the game of Go without human knowledge
- Python元组&字典
- argparse模块学习
- NOIP2017赛前模拟 Table(双向链表)
- NOIP2017提高组初赛 爆炸记/个人剖析
- 学习笔记3
- 15算法课程 108. Convert Sorted Array to Binary Search Tree
- 引用与指针的区别
- C++小白慕课网4
- 5G时代的智能边缘计算AI-EC平台
- 阿里云centos环境之nginx安装<四>
- 成绩作业