25.3.16刷题

本文最后更新于 2025年3月17日 凌晨

P1007 魔法少女小Scarlet

https://www.luogu.com.cn/problem/p1007

题解

模拟,二维数组,临时数组存数据,行变成列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<bits/stdc++.h>
using namespace std;

const int N = 505;
int arr[N][N],f[N][N];

int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);

int n, m; cin >> n >> m;

int nums = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
arr[i][j] = ++nums;
}
}

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++) {
f[i][j] = arr[i][j];
}
}
int x1 = x + r, y1 = y - r;
for (int i = x - r; i <= x + r; i++) {
for (int j = y - r; j <= y + r; j++) {
arr[i][j] = f[x1][y1];
x1--;
}
x1 = x + r, y1++;
}
}
else {
for (int i = x - r; i <= x + r; i++) {
for (int j = y - r; j <= y + r; j++) {
f[i][j] = arr[i][j];
}
}
int x1 = x - r, y1 = y + r;
for (int i = x - r; i <= x + r; i++) {
for (int j = y - r; j <= y + r; j++) {
arr[i][j] = f[x1][y1];
x1++;
}
x1 = x - r, y1--;
}

}
}

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

return 0;
}

25.3.16刷题
https://chasehl.github.io/2025/03/16/25.3.16刷题/
作者
Chase King
发布于
2025年3月16日
更新于
2025年3月17日
许可协议