[1007]魔法少女小Scarlet

news/2024/11/8 18:35:01/

文章目录

  • [1007]魔法少女小Scarlet
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
  • 题解
    • 代码:

[1007]魔法少女小Scarlet

题目描述

Scarlet 最近学会了一个数组魔法,她会在 n × n n\times n n×n 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 9 0 ∘ 90^\circ 90

首先,Scarlet 会把 1 1 1 n 2 n^2 n2 的正整数按照从左往右,从上至下的顺序填入初始的二维数组中,然后她会施放一些简易的魔法。

Scarlet 既不会什么分块特技,也不会什么 Splay 套 Splay,她现在提供给你她的魔法执行顺序,想让你来告诉她魔法按次执行完毕后的二维数组。

输入格式

第一行两个整数 n , m n,m n,m,表示方阵大小和魔法施放次数。

接下来 m m m 行,每行 4 4 4 个整数 x , y , r , z x,y,r,z x,y,r,z,表示在这次魔法中,Scarlet 会把以第 x x x 行第 y y y 列为中心的 2 r + 1 2r+1 2r+1 阶矩阵按照某种时针方向旋转,其中 z = 0 z=0 z=0 表示顺时针, z = 1 z=1 z=1 表示逆时针。

输出格式

输出 n n n 行,每行 n n n 个用空格隔开的数,表示最终所得的矩阵

样例 #1

样例输入 #1

5 4
2 2 1 0
3 3 1 1
4 4 1 0
3 3 2 1

样例输出 #1

5 10 3 18 15
4 19 8 17 20
1 14 23 24 25
6 9 2 7 22
11 12 13 16 21

提示

对于50%的数据,满足 r = 1 r=1 r=1

对于100%的数据 1 ≤ n , m ≤ 500 1\leq n,m\leq500 1n,m500,满足 1 ≤ x − r ≤ x + r ≤ n , 1 ≤ y − r ≤ y + r ≤ n 1\leq x-r\leq x+r\leq n,1\leq y-r\leq y+r\leq n 1xrx+rn,1yry+rn

题解

仅需知道两个公式:

  1. z==0:旋转90度;

b [ i ] [ j ] = a [ x + y − j ] [ y − x + i ] b[i][j]=a[x+y-j][y-x+i] b[i][j]=a[x+yj][yx+i]
或者
b [ x − y + j ] [ x + y − i ] = a [ i ] [ j ] b[x-y+j][x+y-i] = a[i][j] b[xy+j][x+yi]=a[i][j]
2. z==1:旋转270度;
b [ i ] [ j ] = a [ x − y + j ] [ x + y − i ] b[i][j]=a[x-y+j][x+y-i] b[i][j]=a[xy+j][x+yi]
或者
b [ x + y − j ] [ y − x + i ] = a [ i ] [ j ] b[x+y-j][y-x+i] = a[i][j] b[x+yj][yx+i]=a[i][j]

x 与 y 是中心点 x与y是中心点 xy是中心点

代码:

#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int a[1000][1000],b[1000][1000];//a=input;b=载体; 
int main(){int n,m;cin>>n>>m;int i,j,k,x,y,r,z,t=1;for(i=1;i<=n;i++){for(j=1;j<=n;j++){a[i][j]=t;t++;} } for(k=0;k<m;k++){cin>>x>>y>>r>>z;//x行y列为中心;r为step;z=0 表示顺时针,z=1 表示逆时针。int s=2*r+1;memset(b,0,sizeof(b));if(z==0){for(i=x-r;i<=x+r;i++){ for(j=y-r;j<=y+r;j++){  //变成第i列的b[i][j]=a[x+y-j][y-x+i];//	b[x-y+j][x+y-i] = a[i][j];}}}else {for(i=x-r;i<=x+r;i++){   //变成j行 for(j=y-r;j<=y+r;j++){ //	b[x+y-j][y-x+i] = a[i][j];b[i][j]=a[x-y+j][x+y-i];} }}for(i=x-r;i<=x+r;i++){for(j=y-r;j<=y+r;j++){a[i][j]=b[i][j];} }}for(i=1;i<=n;i++){for(j=1;j<=n;j++){printf("%d ",a[i][j]);}if(i!=n)printf("\n"); }return 0;
}

http://www.ppmy.cn/news/276032.html

相关文章

“她经济”时代,兜售少女心的乙女游戏将成新风口?

近日&#xff0c;一款名为《恋与制作人》的手机游戏俘获了不少的少女心&#xff0c;《恋与制作人》是一款超现实恋爱经营的手机游戏&#xff0c;玩家通过游戏操作可以窥视游戏中女主与四个不同背景和身份的男主相遇&#xff0c;并通过付费的方式解锁游戏中的隐藏剧情来满足玩家…

少女前线一直显示连接服务器,少女前线连接失败怎么办 少女前线无法登陆解决方法...

少女前线连接失败怎么办&#xff1f;少女前线无法登陆是怎么回事&#xff1f;小编为大家带来少女前线无法登陆解决方法&#xff0c;希望对正在玩少女前线的小伙伴们有所帮助。 少女前线连接失败问题&#xff1a; 游戏有时候会显示&#xff1a;连接失败&#xff01;请重新登录&a…

【LOJ6363】「地底蔷薇」

【题目链接】 点击打开链接 【思路要点】 记 i i i 个点任意图个数 a b t i abt_i abti​ 的指数型生成函数为 A b t ( x ) Abt(x) Abt(x) &#xff0c;连通图个数 c o n i con_i coni​ 的指数型生成函数为 C o n ( x ) Con(x) Con(x) &#xff0c;有根连通图个数 c o n…

皇后游戏

D.皇后游戏 Time Limit: 1000 MSMemory Limit: 262144 K Total Submit: 236 (64 users)Total Accepted: 41 (38 users)Special Judge: NoDescription 恰逢 H 国国庆&#xff0c;皇后邀请 位大臣来玩一个有奖游戏。首先&#xff0c;她让每个大臣在左、右手上面分别写下一个整数…

Me-and-My-Girlfriend-1靶场通关

Me-and-My-Girlfriend-1靶场通关 靶机ip:192.168.112.135 信息收集 端口&#xff1a;22、80 还是从80WEB服务器端口入手 对服务器目录进行扫描&#xff0c;扫出以下目录 访问80端口WEB服务&#xff0c;显示一段文字只允许本地用户访问。 一眼伪造ip&#xff0c;查看页面…

《少女战争》1.19上线链游玩家|不肝不氪、少女相伴

导语&#xff1a;《少女战争》是一款奇幻二次元的冒险题材&#xff0c;为5v5放置策略回合制手机卡牌游戏。在游戏中&#xff0c;玩家扮演一个初出茅庐的冒险者&#xff0c;受精灵邀请&#xff0c;前往充满奇遇的冒险大陆&#xff1a;冒险的起端大裂谷&#xff0c;充满激情的怒焰…

已刻游戏目录

单机游戏 1.生化奇兵 1、2、3 2.蔷薇少女格斗 3.全女格斗2.0 4.劲乐团 5.魔兽争霸 6.生化危机 1-6 启示录 7.Max Payne 2+3 8.寄生前夜 9.恐龙危机 1、2 10.梦幻模拟战 4、5 11.PS模拟器:北欧女神、放浪冒险谭、寄生前夜、寂静岭1、异度装甲、月下夜想曲、古惑狼1-3、封神演义…

少女

少女在图上开车&#xff0c;她们希望把图上每条边分配给与其相连的点中的一个&#xff0c; 并且每个点最多被分配一条边&#xff0c;问可能的方案数。 【输入格式】 第一行两个整数 N ,M代表点数和边数。 接下来N行每行两个整数代表一条边。 【输出格式】 一行一个整数代…