Skip to content
Author: loop3r
Date: 20260223
tag: 模拟
link: https://www.luogu.com.cn/problem/P4924

问题描述

link

分析

按题意模拟。

参考代码

cpp
#include <bits/stdc++.h>
using namespace std;

int n, m, a[510][510], t[510][510];

int main() {
    cin >> n >> m;

    int cnt = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            a[i][j] = cnt++;
        }
    }

    while (m--) {
        int x, y, r, z;
        cin >> x >> y >> r >> z;

        if (z == 0) {
            for (int i = x - r; i <= x + r; i++) {
                for (int j = y - r; j <= y + r; j++) {
                    t[x - y + j][x + y - i] = a[i][j];
                }
            }
            for (int i = x - r; i <= x + r; i++) {
                for (int j = y - r; j <= y + r; j++) {
                    a[i][j] = t[i][j];
                }
            }
        } else {
            for (int i = x - r; i <= x + r; i++) {
                for (int j = y - r; j <= y + r; j++) {
                    t[x + y - j][y - x + i] = a[i][j];
                }
            }
            for (int i = x - r; i <= x + r; i++) {
                for (int j = y - r; j <= y + r; j++) {
                    a[i][j] = t[i][j];
                }
            }
        }
    }

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}