CodeForces 669C
链接:http://codeforces.com/problemset/problem/669/C
http://www.cnblogs.com/Ash-ly/p/5443155.html
题意:
给你一个N*M的矩阵,有三种操作:
1 r 代表把第r行整体左移一位,第一个到最后一个位置.
2 l 代表把第l列整体上移一位,第一个到最底下的位置.
3 x y v 代表此刻第 x 行第 y 列的值为 v.
给你一系列的操作,让你给出满足要求的原始矩阵,如果有多个答案,其中任意一个都可以.
思路:
既然一个矩阵 Q 经过一系列的操作 p1, p2, p3, p4, ..., pn 变成了 Z,那么 Z 经过 pn, ..., p4, p3, p2, p1 也可以恢复到 Q,那么这道题就解决了,只不过对于命令 1 和 2 需要把方向反过来,对于命令 3,直接对相应的位置进行赋值就好了.
代码:
#include <bits/stdc++.h>
using namespace std; const int MAXN = ;
const int MAXQ = ;
int arr[MAXN + ][MAXN + ];
int n, m, q; struct Order
{
int ord;
int aa;
int bb;
int cc;
}od[MAXQ + ]; void righmv(int low)
{
for(int i = m + ; i >= ; --i)
arr[low][i] = arr[low][i - ];
arr[low][] = arr[low][m + ];
} void downmv(int line)
{
for(int i = n + ; i >= ; --i)
arr[i][line] = arr[i - ][line];
arr[][line] = arr[n + ][line];
} int main()
{
// freopen("input.txt", "r", stdin);
scanf("%d%d%d", &n, &m, &q);
memset(&od, , sizeof(Order));
for(int i = ; i < q; i++)
{
scanf("%d", &od[i].ord);
if(od[i].ord != ) scanf("%d", &od[i].aa);
else scanf("%d%d%d", &od[i].aa, &od[i].bb, &od[i].cc);
}
for(int i = q - ; i >= ; --i)
{
if(od[i].ord == )
righmv(od[i].aa);
else if(od[i].ord == )
downmv(od[i].aa);
else
arr[od[i].aa][od[i].bb] = od[i].cc;
}
for(int i = ; i <= n; i++)
{
for(int j = ; j <= m; j++)
printf(j == ? "%d":" %d", arr[i][j]);
printf("\n");
}
return ;
}
CodeForces 669C的更多相关文章
- CodeForces 669C Little Artem and Matrix GNU
模拟. 把操作记录一下,倒着复原回去. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cs ...
- codeforces 669C C. Little Artem and Matrix(水题)
题目链接: C. Little Artem and Matrix time limit per test 2 seconds memory limit per test 256 megabytes i ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
随机推荐
- BZOJ4327 JSOI2012玄武密码(AC自动机)
当然可以在SA上二分答案,但看起来会被卡log.考虑对模板串建出AC自动机,用母串在上面跑,标记上所有能到达的点.注意到达某个点时需要标记所有其通过fail指针可以走到的点,如果遇到一个标记过的点就可 ...
- [POJ1784]Huffman's Greed
题面在这里 题意 给出一棵\(n\)个节点的二叉查找树的中序遍历中每个节点的访问次数\(p[i]\),和相邻两节点\(i\)和\(i+1\)的访问次数\(q[i]\),构造一棵二叉查找树使得\(\su ...
- AOJ.502 不只是水仙花
不只是水仙花 Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 1196 Submi ...
- [COGS 1535] [ZJOI2004]树的果实 树状数组+桶
我们用树状数组做差就可以解决一切问题,我用桶排并用此来表示出第几大就可以直接求前缀和了 #include<cstdio> #include<algorithm> #define ...
- 纯css实现 switch开关
<!-- 直接看代码,利用了css3兄弟选择器 --><!-- html --> <button class="switch"> <inp ...
- 安卓和html的互相调用
1.写html和安卓布局 <Button android:id="@+id/btn" android:layout_width="wrap_content" ...
- HDU 多校对抗赛第二场 1010 Swaps and Inversions
Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- oracleLinux7上安装oracle11g r2(脚本简单配置环境)
一 环境脚本简单配置 #!/bin/bashmv /etc/yum.repos.d/* /tmpmv iso.repo /etc/yum.repos.d/tar zxvf a.tar.gzmv 7Se ...
- The base command for the Docker CLI.
Description The base command for the Docker CLI. Child commands Command Description docker attach At ...
- JetbrainsCrack
http://blog.csdn.net/lcyong_/article/details/61205672 http://blog.csdn.net/nn_jbrs/article/details/7 ...