CCF认证202406-02 | 矩阵重塑(其二)

题目背景

矩阵转置操作是将矩阵的行和列交换的过程。在转置过程中,原矩阵 A 的元素 aij​ 会移动到转置后的矩阵 AT 的 aji​ 的位置。这意味着 A 的第 i 行第 j 列的元素在 AT 中成为了第 j 行第 i 列的元素。

例如,有矩阵 A 如下:

A=[abcdef]

它的转置矩阵 AT 会是:

AT=[adbecf]

矩阵转置在线性代数中是一个基本操作,广泛应用于各种数学和工程领域。

题目描述

给定 n×m 的矩阵 M,试编写程序支持以下查询和操作:

  1. 重塑操作 p、q:将当前矩阵重塑为p×q 的形状(重塑的具体定义见上一题);

  2. 转置操作:将当前矩阵转置;

  3. 元素查询 i、j:查询当前矩阵第 i 行 j 列的元素(0≤i<n 且 0≤j<m)。

依次给出 t 个上述查询或操作,计算其中每个查询的结果。

输入格式

从标准输入读入数据。

输入共 n+t+1 行。

输入的第一行包含三个正整数 n、m 和 t。

接下来依次输入初始矩阵 M 的第 0 到第 n−1 行,每行包含 m 个整数,按列下标从 0 到 m−1 的顺序依次给出。

接下来输入 t 行,每行包含形如 op a b 的三个整数,依次给出每个查询或操作。具体输入格式如下:

  • 重塑操作:1 p q

  • 转置操作:2 0 0

  • 元素查询:3 i j

输出格式

输出到标准输出。

每个查询操作输出一行,仅包含一个整数表示查询结果。

样例1输入

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

样例1输出

2
6

样例2输入

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

样例2输出

3
2
5

初始矩阵: [123456]​​​, (1,0) 位置元素为 3;

转置后: [135246], (1,0) 位置元素为 2;

重塑后: [135246]​​​, (1,0) 位置元素为 5。

子任务

80 的测试数据满足:

  • t≤100;

全部的测试数据满足:

  • t≤105 且其中转置操作的次数不超过 100;

  • n、m 和所有重塑操作中的 p、q 均为正整数且 n×m=p×q≤104;

  • 输入矩阵中每个元素的绝对值不超过 1000。

提示

  • 对于 n×m 的矩阵,虽然转置和重塑操作都可以将矩阵形态变为 m×n,但这两种操作通常会导致不同的结果。

  • 评测环境仅提供各语言的标准库,特别地,不提供任何线性代数库(如 numpypytorch 等)。

题解:

        观察题目,比第一题多出了一个转置的操作,和一个查询的操作就没了。

        分析题目,第一题的重塑矩阵并不会改变原矩阵的数字的顺序,及将原矩阵转化成一维后,重塑的矩阵和原矩阵的一维数组相同。

        而转置矩阵会改变原数组的数字的顺序,所以要处理操作。

        再解决查询问题,直接从一维数组中提取第i*y+j个数字及为答案,没有时间问题。

        所以这题除去输入输出,最大的时间损耗就在转置上。

        对于转置问题,观察转置的特性,比如一个4*3的矩阵转置

1 2 3 4 5 6 7 8 9 10 11 12->1 4 7 10 2 5 8 11 3 6 9 12

        就是在原一维数组上隔m个数取一个放入新数组,重复m次。这就解决了转置的问题。时间复杂度O(n)。

代码: 

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include <functional>
using namespace std;
typedef long long int ll;

int n=0,m=0,t=0,i,j,op=0,nx=0,ny=0,sum=0;
int num[10001]={0};
int newnum[10001]={0};

main()
{
    cin >> n >> m >> t;
    nx=n;ny=m;sum=n*m;
    for(i=0;i<sum;i++){
        cin >> num[i];
    }
    while(t>0){
        cin >> op;
        if(op==1){
            cin >> nx >> ny;
        }
        else if(op==2){
            cin >> n >> n;
            //
            n=0;
            for(i=0;i<ny;i++){
                for(j=i;j<sum;j+=ny){
                    newnum[n]=num[j];
                    n++;
                }
            }
            for(i=0;i<sum;i++){
                num[i]=newnum[i];
                //cout << newnum[i] << " ";
            }
            //cout << "\n";
            n=nx;nx=ny;ny=n;
            //
        }
        else if(op==3){
            cin >> n >> m;
            cout << num[n*ny+m] << "\n";
        }
        t--;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CSP CCF记录】201903-2第16次认证 二十四点

题目 样例1输入 10 934x3 54x5x5 7-9-98 5x6/5x4 3579 1x19-9 1x9-5/9 8/56x9 6x7-3x6 6x44/5 样例1输出 Yes No No Yes Yes No No No Yes Yes 样例1解释 思路 参考&#xff1a;CCF小白刷题之路---201903-2 二十四点&#xff08;C/C 100分&#xff09;_ccf认证小白-CSDN博客 …

docker 容器运行Ruoyi-cloud

1&#xff0c;linux系统安装openjdk1.8,mvn,dokcer,node,git 2&#xff0c;拉取代码 1&#xff09;查看gitee仓库地址 2&#xff09;创建/app文件夹&#xff0c;进入app目录 mkdir /app cd /app 3&#xff09;clone代码 4&#xff09;修改配置文件中nacos地址 # 修改注…

浮点数的表示—IEEE754标准

浮点数的表示—IEEE754标准 引言 我们知道&#xff0c;在计算机中&#xff0c;数字以0和1组成的二进制序列来表示。但是&#xff0c;对于非常大的数字以及非常接近0的数字&#xff0c;简单的存储方式往往会造成精度的丢失。 为了解决这个问题&#xff0c;提供更高效的浮点数…

Window脚本自动化uiautomation详解_番茄出品

Window脚本自动化uiautomation详解_番茄出品 start 有时候pc端电脑&#xff0c;会有一些重复操作&#xff0c;希望能够通过代码实现这些操作。尝试了好几个库&#xff0c;但是识别准确率很低&#xff0c;在苦苦寻找之后&#xff0c;发现一个非常好用的 python 库 &#xff1a…

Java技术复习提升 11 常用类

第11章 常用类 1 包装类 不同包装类都继承自Object类 Serialiazble接口表示该类表示序列化 Comparable接口用于定义自然顺序 包装类和基本数据的转换 jdk5之前手动装箱拆箱 jdk5之后自动装箱拆箱 自动装箱底层调用的是valueof方法 拆箱仍然是intvalue方法 public class Inte…

Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(三)

本篇紧跟第一篇&#xff0c; 和 第二篇无关 Oracle - 多区间按权重取值逻辑 &#xff0c;分时区-多层级-取配置方案 Oracle - 多区间按权重取值逻辑 &#xff0c;分时区-多层级-取配置方案(二) 先说需求&#xff1a; 某业务配置表&#xff0c;按配置的时间区间及组织层级取方…

DASCTF 2024 10月 Reverse 完成笔记 附题目

题目链接: https://github.com/Airrcat/long_long/tree/main/DASCTF_2024_10 ezre 查PE 32位无壳 开始分析 看起来很像加壳了 字符串未有暴露信息&#xff0c;但是段中有一个themida 发现是一个壳&#xff0c;直接去找脱壳机 一些脱壳工具&#xff08;Magicmida)是…

kafka进阶_2.存储消息

文章目录 一、存储消息介绍二、副本同步2.1、数据一致性2.2、HW在副本之间的传递 如果想了解kafka基础架构和生产者架构可以参考 kafka基础和 Kafka进阶_1.生产消息。 一、存储消息介绍 数据已经由生产者Producer发送给Kafka集群&#xff0c;当Kafka接收到数据后&#xff0c…

志愿者小程序源码社区网格志愿者服务小程序php

志愿者服务小程序源码开发方案&#xff1a;开发语言后端php&#xff0c;tp框架&#xff0c;前端是uniapp。 一 志愿者端-小程序&#xff1a; 申请成为志愿者&#xff0c;志愿者组织端进行审核。成为志愿者后&#xff0c;可以报名参加志愿者活动。 志愿者地图&#xff1a;可以…

SpringMVC-01-回顾MVC

1. 回顾MVC 1.1. 什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式&#xff0c;MVC是一种架构模式。…

解决k8s拉取私有镜像401 Unauthorized 问题

拉取镜像时未指定账户和密码通常是因为需要访问的镜像仓库启用了认证&#xff0c;但 Kubernetes 默认配置中未提供访问凭据。要解决此问题&#xff0c;可以按照以下步骤配置镜像仓库的认证信息&#xff1a; 1. 创建 Kubernetes Secret 为镜像仓库配置访问凭据&#xff0c;使用…

AmazonS3集成minio实现https访问

最近系统全面升级到https&#xff0c;之前AmazonS3大文件分片上传直接使用http://ip:9000访问minio的方式已然行不通&#xff0c;https服务器访问http资源会报Mixed Content混合内容错误。 一般有两种解决方案&#xff0c;一是升级minio服务&#xff0c;配置ssl证书&#xff0c…

el-table-column自动生成序号在序号前插入图标

实现效果&#xff1a; 代码如下&#xff1a; 在el-table里加入这个就可以了&#xff0c;需要拿到值可以用scope.$index ​​​​​​​<el-table-column type"index" label"序号" show-overflow-tooltip"true" min-width"40">…

JavaEE 实现 登录+注册(采用注解方式链接数据库)

&#xff08;Spring MVC的Controller练习&#xff09; 工具&#xff1a;Tomcat 10.0.23&#xff0c;MySQL&#xff0c;JDK18 一、运行效果展示 点击运行Tomcat首先进入index.jsp页面 若已有账号点击登录即可进行登录&#xff0c;这里先点击“获取ROY6账号”去注册&#xff0…

V-rep机器人仿真软件学习笔记

常用的机器人仿真软件有哪些&#xff1f;为什么选择V-rep&#xff1f; 目前常用的机器人物理仿真软件有Gazebo、V-rep、Webots等&#xff0c;这三款都是开源软件&#xff0c;自己使用过前两种&#xff0c;Gazebo配合ROS使用功能十分强大&#xff0c;但是要在Linux系统下使用&am…

数据库中的增删改查操作、聚合函数、内置函数、分组查询

数据库中的增删改查操作、聚合函数、内置函数、分组查询 CRUD简介Create 新增语法示例单⾏数据全列插⼊单⾏数据指定列插⼊多⾏数据指定列插⼊ Retrieve 检索语法⽰例构造数据 Select全列查询指定列查询查询字段为表达式为查询结果指定别名语法⽰例 结果去重查询 Order by 排序…

Flink转换算子——flatMap/map/filter/keyby/reduce综合案例

需求: 对流数据中的单词进行统计&#xff0c;排除敏感词TMD【腾讯美团滴滴】 此处用到了一个windows版本的软件 netcat&#xff0c;具体用法&#xff0c;先解压&#xff0c;然后在路径中输入cmd,来到黑窗口。 官网地址&#xff1a;netcat 1.11 for Win32/Win64Netcat介绍及安装…

图算法 | 3、图分析与数据科学

图分析(Graph Analytics)在本质上是对图数据的处理与分析&#xff0c;其过程可以概括为图计算。 而图计算的范畴不仅包含数据的计算或分析&#xff0c;还包含元数据管理、模式管理、数据建模、数据清洗、转换、加载、治理、图分析与计算等一系列操作。 或许我们用大数据生命周…

鲸鱼机器人和乐高机器人的比较

鲸鱼机器人和乐高机器人各有其独特的优势和特点&#xff0c;家长在选择时可以根据孩子的年龄、兴趣、经济能力等因素进行综合考虑&#xff0c;选择最适合孩子的教育机器人产品。 优势 鲸鱼机器人 1&#xff09;价格亲民&#xff1a;鲸鱼机器人的产品价格相对乐高更为亲民&…

【Unity】 GamePlay开发:通用的检查点/成就/条件触发系统

特别适用于各种解谜关卡, 成就系统&#xff0c;任务系统&#xff0c;的 通用事件处理 CheckPointHandler.cs随便挂在场景中的某个物体上 (单例模式&#xff0c;场景中只要有一个&#xff09; 1) How To Use CheckPoint Events是一个列表&#xff0c;每个元素是一个组合事件&…