zoukankan      html  css  js  c++  java
  • codeforces C. Inna and Huge Candy Matrix 解题报告

    题目链接:http://codeforces.com/problemset/problem/400/C

    题目意思:给出一个n行m列的矩阵,问经过 x 次clockwise,y 次 horizontal rotate 和z次counterclockwise 之后,原来在n行m列的矩阵的坐标去到哪个位置。

        题目意思很容易看懂。易知,对于clockwise,counterclockwise的次数,mod 4 == 0 相当于没有改变!而对于 horizontal rotate,mod 2 == 0 也是没有改变的!

       假设问的坐标是(i, j),那么经过一次clockwise的转变,坐标变为(j, n-i+1),交换 n 和 m 值。

       经过一次 horizontal rotate,坐标为(i, m-j+1)

       经过一次counterclockwise,坐标为(m-j+1, i),交换 n 和 m 值

       特别要注意,计算完一个点的位置之后,n和m有可能与原始输入的n和m的值不同,因此需要记录原始输入的 n 和 m !!!因为题目问的是原始输入下的每个坐标点经过x,y,z次转换后的位置,并不是在计算完上一个坐标点后调整过的n 和 m。

       

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 int n, m;
     8 int x, y;
     9 
    10 void clockwise(int cnt)
    11 {
    12     for (int i = 1; i <= cnt; i++)
    13     {
    14         int t = x;
    15         x = y;
    16         y = n-t+1;
    17         swap(n, m);
    18     }
    19 }
    20 
    21 void hor_rotate()
    22 {
    23     y = m - y + 1;
    24 }
    25 
    26 void counterclockwise(int cnt)
    27 {
    28     for (int i = 1; i <= cnt; i++)
    29     {
    30         int t = x;
    31         x = m - y + 1;
    32         y = t;
    33         swap(n, m);
    34     }
    35 }
    36 
    37 int main()
    38 {
    39     int i, a, b, c, p;
    40     while (scanf("%d%d%d%d%d%d", &n, &m, &a, &b, &c, &p) != EOF)
    41     {
    42         int tn, tm;
    43         tn = n;
    44         tm = m;
    45         for (i = 1; i <= p; i++)
    46         {
    47             n = tn;
    48             m = tm;
    49             scanf("%d%d", &x, &y);
    50             if (a % 4)
    51                 clockwise(a%4);
    52             if (b % 2)
    53                hor_rotate();
    54             if (c % 4)
    55                 counterclockwise(c%4);
    56             printf("%d %d
    ", x, y);
    57         }
    58     }
    59     return 0;
    60 }

       

  • 相关阅读:
    汇编基础概念
    linux实验小结
    乐视三合一体感摄像头开发记录
    IplImage* 格式与Mat 格式的转换
    STM32关于优先级设定的理解 NVIC_SetPriority()
    "IRQn_Type" is undefined
    串口通信实验编译没有错误,但是串口调试助手收不到数据
    SecureCRT 8版本 自用备份
    Matlab使用robot Toolbox
    开篇
  • 原文地址:https://www.cnblogs.com/windysai/p/3618255.html
Copyright © 2011-2022 走看看