【P4924】[1007] 魔法少女小Scarlet

[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

超级厉害的 @ P l e a s a n t @Pleasant @Pleasant_ g o a t goat goat_ 17 17 17的题解

#include<iostream>
using namespace std;int n,m;void Magic(int (*mt)[500],int x,int y,int r,int z){int ro =r;int tmp[500];int xs = x-r,ys=y-r,xe=x+r,ye =y+r;for(int p = 0;p<r;p++){if(z){for(int i=ys,j=xs,m=0;i<ye;i++,j++){tmp[m++] = mt[xs][i];mt[xs][i] = mt[j][ye];}for(int i=ye,j=xs;i>ys;i--,j++){mt[j][ye] = mt[xe][i];}for(int i=ye,j=xe;i>ys;i--,j--){mt[xe][i] = mt[j][ys];}for(int i=xe,m=0;i>xs;i--){mt[i][ys] = tmp[m++];}}else{for(int i=ys,j=xe,m=0;i<ye;i++,j--){tmp[m++] = mt[xs][i];mt[xs][i] = mt[j][ys];}for(int i=ye,j=xe;i>ys;i--,j--){mt[j][ys] = mt[xe][i];}for(int i=ye,j=xs;i>ys;i--,j++){mt[xe][i] = mt[j][ye];}for(int i=xs,m=0;i<xe;i++){mt[i][ye] = tmp[m++];}}xs++,xe--,ys++,ye--;}return;
}int main()
{cin >> n >> m;if (n > 500) {  cerr << "错误: n需要小于100." << endl;  return 1;  }  int mt[500][500] = {0};int num = 1;for(int i=0;i<n;i++){for(int j=0;j<n;j++){mt[i][j] = num++;}}for(int i=0;i<m;i++){int x,y,r,z;cin >> x >> y >> r >> z;x--;y--;Magic(mt,x,y,r,z);}for(int i=0;i<n;i++){for(int j=0;j<n;j++){cout << mt[i][j] << " ";}cout << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux线程补充——周边问题

一、线程池 ​ 使用多线程时要注意传参传递堆空间指针变量&#xff1b; ​ 平常定义的缓冲区就是一个简单的数据池&#xff1b;malloc的底层调用了系统调用来申请堆空间是有成本的&#xff0c;如&#xff1a;需要使用页表和MMU将虚拟地址和物理地址建立映射&#xff0c;期间会…

蓝桥杯刷题记录之数字王国之军训排队

记录 卡了半天&#xff0c;check函数中的temp % ele 0写成了ele % temp 0就挺无语的 思路 这个晚上在补 代码 import java.util.*; public class Main{static List<List<Integer>> que new ArrayList<>();static int MIN Integer.MAX_VALUE;static i…

Personal Website

Personal Website Static Site Generators hexo hugo jekyll Documentation Site Generator gitbook vuepress vitepress docsify docute docusaurus Deployment 1. GitHub Pages 2. GitLab Pages 3. vercel 4. netlify Domain 域名注册 freessl 域名解析域名…

Java基础面试整理

1. Java的跨平台优势&#xff1f; 写好的Java源文件通过Javac命令编译生成class文件(中间文件)&#xff0c;然后JVM对class文件进行执行生成机器语言然后机器语言在平台中操作&#xff0c;Java在不同的平台下都有对应的不同版本的JVM&#xff0c;JVM可以识别字节码文件从而运行…

DMA控制器

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;这是我作为学习笔记的25篇&#xff0c;本篇文章给大家介绍DMA。 无论 I/O 速度如何提升&#xff0c;比起 CPU&#xff0c;总还是太慢。如果我们对于 I/O 的操作&#xff0c;都是由 CPU 发出对应的指令&#xff0c;然后等待…

带气压高度的三点法MATLAB定位函数(基于加权最小二乘法WLS)

函数作用 输入气压高度值、待定位节点与各个锚节点的距离、锚节点位置、权重&#xff08;可选&#xff09;&#xff0c;输出待测点位置 程序源码 function [p_out] triposition_weight_Ver2(dairheight,R_calcu,baseP,varargin) % airghight 由气压高度计算的锚节点-待测节…

【数据结构】线性表的定义与基本操作

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

用户态和内核态:操作系统权限与运行模式解析

在现代计算机操作系统中&#xff0c;用户态&#xff08;User Mode&#xff09;和内核态&#xff08;Kernel Mode&#xff09;是两种重要的运行模式&#xff0c;用于区分用户程序与操作系统核心之间的权限和特权级别。深入理解这两种模式对于理解操作系统的工作原理至关重要。 …

关于vector的size,unsigned int类型

平时写代码很少注意溢出&#xff0c;这次被遇上了。 题目&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool containsNearbyDuplicate(vector<int>& nums, int k) {//超时,O(n2)// for(int i0;i<nums.size();i)// {// fo…

学习次模函数-第2章 定义

纵观本专著&#xff0c;我们认为及其幂集&#xff08;即&#xff0c; 所有子集的集合&#xff09;&#xff0c;其基数为。我们也考虑一个实值集函数&#xff0c;使得。 与凸函数的一般约定相反&#xff08;见附录A&#xff09;&#xff0c;我们不允许函数有无穷大的值。 次模分…

ssm004新生报到系统+jsp

新生报到系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对新生报到信息管理混乱&#xff0c;出错率…

虚拟线圈法的车辆统计_3.12

目标 车流量统计的方法实现车流量检测 基于虚拟线圈法的车辆统计是一种利用计算机视觉技术模拟传统物理线圈检测原理&#xff0c;对交通视频流中的车辆进行计数的方法。在传统交通监控系统中&#xff0c;物理线圈是通过感应车辆经过时产生的电磁场变化来记录车辆流量。这种方式…

基于深度学习的图像分类方法

基于深度学习的图像分类方法已经成为计算机视觉领域的重要组成部分。这类方法通常涉及使用深度神经网络&#xff0c;特别是卷积神经网络&#xff08;CNNs&#xff09;来识别和分类图像中的对象。以下是基于深度学习的图像分类方法的一些关键要点&#xff1a; 卷积神经网络&…

数据库ER图和ER图转换关系模式

ER图&#xff08;Entity-Relationship Diagram&#xff09;是一种用于描述实体&#xff08;Entity&#xff09;之间关系的图形化工具。ER图是由实体、属性和关系组成的。 实体&#xff08;Entity&#xff09;指的是现实世界中的一个对象或概念&#xff0c;如人、物、事件等。每…

安全问题

信息安全具有不可证明的特性&#xff0c;只能说在某些已知攻击下是安全的&#xff0c;对于将来新的攻击是否安全仍然很难断言。 信息系统不安全的主要因素有程序设计漏洞、用户操作不当和外部攻击。外部攻击形式主要有计算机病毒、恶意软件、黑客攻击等。目前计算机系统在理论…

模型怎么处理不同尺寸的输入图像

1.有全连接层的的CNN模型 卷积能够处理不同尺寸的输入图像&#xff0c;但全连接层不行&#xff0c;因此在送入全连接层之前需将卷积层提取的特征转换为一个固定长度的特征向量。 那么如何转换&#xff1f; 1.1 GAP(Global Average Pooling)全局平均池化 直接代码举例&#…

MySQL数据库备份及恢复

一、数据库备份的分类 1.1 从物理与逻辑的角度 从物理与逻辑的角度&#xff0c;备份可分为物理备份、逻辑备份 物理备份:对数据库操作系统的物理文件(如数据文件日志文件等)的备份 物理备份方法 冷备份(脱机备份)是在关闭数据库的时候进行的 热备份(联机备份):数…

大数据基础:Linux基础详解

课程介绍 本课程主要通过对linux基础课程的详细讲解&#xff0c;让大家熟练虚拟机的安装使用&#xff0c;Linux系统的安装配置&#xff0c;学习掌握linux系统常用命令的使用&#xff0c;常用的软件安装方法&#xff0c;制作快照&#xff0c;克隆&#xff0c;完成免密登录&…

校园跑腿大学生创业平台

校园跑腿大学生创业是一个充满挑战与机遇的领域。随着大学生消费能力的提升和校园生活的多样化&#xff0c;校园跑腿服务的需求日益旺盛&#xff0c;这为有志于创业的大学生提供了良好的市场机遇。 首先&#xff0c;创业成本低是校园跑腿大学生创业的一大优势。校园跑腿服务通常…

异常处理篇

文章目录 1. try 和 except2. 多个 except 块3. else 块4. finally 块5. raise 语句6. 自定义异常7. 异常链 1. try 和 except try 块包含可能引发异常的代码&#xff0c;而 except 块则包含处理这些异常的代码。 try:# 尝试执行可能会引发异常的代码result 10 / 0 # 这将引…