Codeforces 400C Inna and Huge Candy Matrix
2014-03-09 20:28
411 查看
题目链接:Codeforces 400C Inna and Huge Candy Matrix
不是难题,需要耐心找规律。
记得某些翻转后需要交换行列值。
不是难题,需要耐心找规律。
记得某些翻转后需要交换行列值。
#include <iostream> using namespace std; const int MAX_N = 100000 + 1000; struct Point { int x,y; }; int n,m,x,y,z,p; Point point[MAX_N]; void clockwise(int k) { k = k % 4; if(k == 1) { for(int i = 0;i < p;i++) { int temp_x = point[i].x; int temp_y = point[i].y; point[i].x = temp_y; point[i].y = n + 1 - temp_x; } int temp = n; n = m; m = temp; } else if(k == 2) { for(int i = 0;i < p;i++) { int temp_x = point[i].x; int temp_y = point[i].y; point[i].x = n + 1 - temp_x; point[i].y = m + 1 - temp_y; } } else if(k == 3) { for(int i = 0;i < p;i++) { int temp_x = point[i].x; int temp_y = point[i].y; point[i].x = m + 1 - temp_y; point[i].y = temp_x; } int temp = n; n = m; m = temp; } } void horizontal_rotate(int k) { k = k % 2; if(k == 0) return; for(int i = 0;i < p;i++) point[i].y = m + 1 - point[i].y; } void counterclockwise (int k) { k = k % 4; if(k == 1) { for(int i = 0;i < p;i++) { int temp_x = point[i].x; int temp_y = point[i].y; point[i].x = m + 1 - temp_y; point[i].y = temp_x; } int temp = n; n = m; m = temp; } else if(k == 2) { for(int i = 0;i < p;i++) { int temp_x = point[i].x; int temp_y = point[i].y; point[i].x = n + 1 - temp_x; point[i].y = m + 1 - temp_y; } } else if(k == 3) { for(int i = 0;i < p;i++) { int temp_x = point[i].x; int temp_y = point[i].y; point[i].x = temp_y; point[i].y = n + 1 - temp_x; } int temp = n; n = m; m = temp; } } int main() { while(cin >> n >> m >> x >> y >> z >> p) { for(int i = 0;i < p;i++) cin >> point[i].x >> point[i].y; clockwise(x); horizontal_rotate(y); counterclockwise(z); for(int i = 0;i < p;i++) cout << point[i].x << " " << point[i].y << endl; } return 0; }
相关文章推荐
- 二叉查找树基本操作实现
- 十六进制转十进制
- 使用iBATIS3.0完成增删改查
- C/C++/Qt 统计运行时间
- 工厂方法模式(Factory Method Pattern)理论篇
- 利用python自动清除Android工程中的多余资源
- linux 至尊播放器MPlayer 安装详解
- DatabaseSession 简单jdbc封装!
- 简单工厂模式 Simple Factory Pattern
- 2014名校复试机考模拟题 21376:朋友圈
- arm-linux-objcopy
- uva 101
- 可靠性与可用性的比较
- C语言学习记录1
- 各个平台的mysql重启命令(
- COJ 1645计算几何:判断线段是否相交
- iBatis简单入门教程
- Oracle WITH A AS 用法解析
- LogBack小记
- 1、Orchard商城开发——开发需求