社区讨论
最后一个点TLE,还有啥可以优化的嘛
P4924[1007] 魔法少女小Scarlet参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lod838a9
- 此快照首次捕获于
- 2023/10/31 02:17 2 年前
- 此快照最后确认于
- 2023/11/05 12:44 2 年前
Orz
CPP////IzayoiAster////
#include<cstdio>
#include<iostream>
#include<cstdlib>
#define maxn 508
using namespace std;
int n, m, a[maxn][maxn], b[maxn][maxn];
inline int rd(){
register int ret = 0, f = 1; register char ch;
while(!isdigit(ch = getchar())) if(ch == '-') f = 0;
ret = ch^48;
while(isdigit(ch = getchar())) ret = (ret<<1) + (ret<<3) + (ch^48);
return f ? ret : -ret;
}
inline void prework(){
int cnt = 1;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
a[i][j] = b[i][j] = cnt++;
return;
}
void cp(int x, int y, int r){ //把a数组复制一下给b数组
for(register int i=x-r; i<=x+r; i++)
for(register int j=y-r; j<=y+r; j++)
b[i][j] = a[i][j];
return;
}
void rotate_l(int x, int y, int r){ //逆时针
if(!r) return;
for(register int i=x-r; i<=x+r; i++){
for(register int j=y-r; j<=y+r; j++){
int x1 = x - (y - j);
int y1 = y - (i - x);
a[i][j] = b[x1][y1];
}
}
rotate_l(x, y, --r);
return;
}
void rotate_r(int x, int y, int r){ //顺时针
if(!r) return;
for(register int i=x-r; i<=x+r; i++){
for(register int j=y-r; j<=y+r; j++){
int x1 = x + (y - j);
int y1 = y + (i - x);
a[i][j] = b[x1][y1];
}
}
rotate_r(x, y, --r);
return;
}
int main(){
n = rd();
m = rd();
prework();
while(m--){
int x, y, r, z;
x = rd();
y = rd();
r = rd();
z = rd();
if(z) rotate_l(x, y, r);
else rotate_r(x, y, r);
if(m) cp(x, y, r);
}
for(register int i=1; i<=n; i++){
for(register int j=1; j<=n; j++){
printf("%d ", a[i][j]);
}
putchar('\n');
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...