HDOJ5671
2016-05-01 16:34
337 查看
刷题的时候,最怕的一种题:题意上明明是模拟,但是根据其数据量大小去看,模拟完肯定TLE
这个题,给了一种解决方法:对所谓的模拟进行记录而不是动作,最终根据记录情况输出,而不是变换完毕之后输出
看完代码发现很简单,但是想写出这种思路转换的代码很难
a【i】表示位置上的行变换
b【i】表示位置上的列变换
c【i】表示数值上的行变换
d【i】表示数值上的列变换
变换公式很容易按照题解上说的就好
最终答案比较难考虑:行列位置变换与行列数值变化都考虑进来
这个题,给了一种解决方法:对所谓的模拟进行记录而不是动作,最终根据记录情况输出,而不是变换完毕之后输出
看完代码发现很简单,但是想写出这种思路转换的代码很难
a【i】表示位置上的行变换
b【i】表示位置上的列变换
c【i】表示数值上的行变换
d【i】表示数值上的列变换
变换公式很容易按照题解上说的就好
最终答案比较难考虑:行列位置变换与行列数值变化都考虑进来
#include<map> #include<set> #include<math.h> #include<time.h> #include<iostream> #include<cstdio> #include<queue> #include<stack> #include<stdio.h> #include<cstring> #include<string.h> #include<algorithm> #include<cstdlib> using namespace std; #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1,r #define ll rt<<1 #define rr rt<<1|1 #define LL long long #define ULL unsigned long long #define maxn 1050 #define maxnum 1000050 #define eps 1e-6 #define input freopen("input.txt","r",stdin) #define output freopen("output.txt","w",stdout) int num[maxn][maxn]; int a[maxn],b[maxn],c[maxn],d[maxn]; int t,n,m,q; int main(){ //input; int i,j,x,y; scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&m,&q); memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); for(i=1;i<=n;i++) a[i]=i; for(i=1;i<=m;i++) b[i]=i; for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&num[i][j]); while(q--){ scanf("%d%d%d",&i,&x,&y); if (i==1) swap(a[x],a[y]); else if (i==2) swap(b[x],b[y]); else if (i==3) c[a[x]]+=y; else d[b[x]]+=y; } for(i=1;i<=n;i++) for(j=1;j<=m;j++) printf("%d%c",num[a[i]][b[j]]+c[a[i]]+d[b[j]],j==m?'\n':' '); } return 0; }
相关文章推荐
- 图论判环模板
- innerHTML、getElementsByName()、getElementsByTagName()
- Linux内核学习总结
- 说一说windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)
- 链表结点的插入
- LightOJ 1341
- Chaikin细分曲线
- 用C语言写的注释转换
- 重载内核全程分析笔记
- 第二章 关系模型介绍
- 新手在windows7下安装ubuntu15.10
- 全国SHP地图数据赠送
- 移动开发入门指南
- 希尔排序(Shell)
- ZOJ - 3880 Demacia of the Ancients (水)
- Eclipse中 package 中创建新package 会分离的问题
- POJ 3352 Road Construction 边双联通分量
- Android 透明状态栏实现方案
- Struts2在开发中的一些异常总结(持续更新)
- latex 小结