AtCoder ABC周赛2023 12/10 (Sun) D题题解
目录
原题截图:
题目大意:
主要思路:
注:
代码:
原题截图:




题目大意:
给定两个 的矩阵
和
。
你每次可以交换矩阵 的相邻两行中的所有元素或是交换两列中的所有元素。
请问要使 变换至
至少需要几步操作?
如果无法变换至 ,则输出
-1。
主要思路:
这个题正解不好想,但我们看一下数据范围:H,W<=5。我们可以暴力bfs,但我们要枚举有效数组,所以用一个map记录,就做成了。
注:
不要再函数中开数组,用vector<vector<int>>。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<vector<int>> a(10,vector<int>(10)),b(10,vector<int>(10));
bool equation(vector<vector<int>> a,vector<vector<int>> b)
{for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]!=b[i][j]){return 0;}}}return 1;
}
struct node{vector<vector<int>> x;int cnt;
};
map<vector<vector<int>>,bool> mp;
void bfs()
{queue<node> q;q.push({a,0});mp[a] = 1;while(!q.empty()){node tmp=q.front();q.pop();if(equation(tmp.x,b)){cout<<tmp.cnt;exit(0);}for(int i=1;i<n;i++){swap(tmp.x[i],tmp.x[i+1]);if(!mp.count(tmp.x)){q.push({tmp.x,tmp.cnt+1});mp[tmp.x] = 1; }swap(tmp.x[i],tmp.x[i+1]);}for(int i=1;i<m;i++){for(int j=1;j<=n;j++){swap(tmp.x[j][i],tmp.x[j][i+1]);}if(!mp.count(tmp.x)){q.push({tmp.x,tmp.cnt+1});mp[tmp.x] = 1; }for(int j=1;j<=n;j++){swap(tmp.x[j][i],tmp.x[j][i+1]);}}}
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>b[i][j];}}bfs();cout<<-1;return 0;
}
相关文章:
AtCoder ABC周赛2023 12/10 (Sun) D题题解
目录 原题截图: 题目大意: 主要思路: 注: 代码: 原题截图: 题目大意: 给定两个 的矩阵 和 。 你每次可以交换矩阵 的相邻两行中的所有元素或是交换两列中的所有元素。 请问要使 变换至…...
基于C/C++的rapidxml加载xml大文件 - 上部分翻译
RAPIDXML手册 版本 1.13 版权所有 (C) 2006, 2009 Marcin Kalicinski有关许可证信息,请参阅随附的文件许可证 .txt。 目录 1. 什么是 RapidXml? 1.1 依赖性和兼容性1.2 字符类型和编码1.3 错误处理1.4 内存分配1.5 …...
小程序使用Nodejs作为服务端,Nodejs与与MYSQL数据库相连
小程序使用Nodejs作为服务端,Nodejs与MYSQL数据库相连 一、搭建环境二、配置Nodejs三、与小程序交互四、跨域处理/报错处理五、nodejs连接mysql数据库六、微信小程序连接nodejs报错七、小程序成功与服务端相连,且能操作数据库一、搭建环境 新建空文件夹:Win + R进入cmd命令界…...
深度解读 Cascades 查询优化器
数据库中查询优化器是数据库的核心组件,其决定着 SQL 查询的性能。Cascades 优化器是 Goetz 在 volcano optimizer generator 的基础上优化之后诞生的一个搜索框架。 本期技术贴将带大家了解 Cascades 查询优化器。首先介绍 SQL 查询优化器,接着分析查询…...
Bash 操作审计和安全加固 —— 筑梦之路
bash 记录 配置环境变量:/etc/profile export HISTTIMEFORMAT"%F %T "export HISTORY_FILE/var/log/history/bash_history.logexport PROMPT_COMMAND{ thisHistIDhistory 1|awk "{print \\$1}";lastCommandhistory 1| awk "{\\$1\"…...
C/C++常见面试知识总结(三)
C语言是一种通用计算机(高级)编程语言;面向过程;广泛应用于计算机系统设计以及应用程序编写;设计目标,是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行…...
AR眼镜_AR智能眼镜整机硬件方案定制
AR眼镜的主要模块包括显示、光学模组、传感器和摄像头、主板、音频和网络连接等。其中,光学显示、主板处理器是决定AR眼镜成本的关键,光机占整体AR眼镜成本43%、处理器占整体成本31%。 AR眼镜的主板设计难点在于尺寸要足够小且要处理好散热问题。主板上的…...
2. 皇后的控制力
题目描述: 我们对八皇后问题进行扩展。 国际象棋中的皇后非常神勇,一个皇后可以控制横、竖、斜线等4个方向(或者说是8个方向),只要有棋子落入她的势力范围,则必死无疑,所以对方的每个棋子都要…...
南京邮电大学数据库实验二
1. 用create database命令创建电影数据库(MovieDB)。 create database MovieDB; 在创建表之前需调用一下指定的数据库: use MovieDB; 2.在电影数据库中用create table 命令创建如下5个关系模式: 创建movies表: create table Movies( ti…...
数据库 02-03 补充 SQL的子查询(where,from),子查询作为集合来比较some,exists,all(某一个,存在,所有)
子查询: where字句的子查询: 通常用in关键字: 举个例子: in关键字: not in 关键字: in 也可以用于枚举集合: where中可以用子查询来作为集合来筛选元祖。 some,all的运算符号…...
提升英语学习效率,尽在Eudic欧路词典 for Mac
Eudic欧路词典 for Mac是一款专为英语学习者打造的强大工具。无论您是初学者还是高级学习者,这款词典都能满足您的需求。 首先,Eudic欧路词典 for Mac具备丰富的词库,涵盖了各个领域的单词和释义。您可以轻松查询并学习单词的意思、用法和例…...
计算机网络英文总结
物理层 数据链路层 循环冗余校验(Cyclic Redundancy Check) 点对点协议PPP(Point-to-Point Protocol) 链路控制协议(Link Control Protocol) 网络控制协议(Network Control Protocol) 网络层(network layer) IP(Internet Protocol) 网际协议 ARP(Address…...
Spring上下文之注解模块ConfigurationMethod
博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…...
【深度学习】强化学习(三)强化学习的目标函数
文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略(Policy)4、马尔可夫决策过程5、强化学习的目标函数1. 总回报(Return)2. 折扣回报(Discounted Return)a. 折扣率b. 折扣回报的定义 3.…...
Python高级算法——人工神经网络(Artificial Neural Network)
Python中的人工神经网络(Artificial Neural Network):深入学习与实践 人工神经网络是一种模拟生物神经网络结构和功能的计算模型,近年来在机器学习和深度学习领域取得了巨大成功。本文将深入讲解Python中的人工神经网络ÿ…...
深入理解JVM设计的精髓与独特之处
这是Java代码的执行过程 从软件工程的视角去深入拆解,无疑极具吸引力:首个阶段仅依赖于源高级语言的细微之处,而第二阶段则仅仅专注于目标机器语言的特质。 不可否认,在这两个编译阶段之间的衔接(具体指明中间处理步…...
fastjson序列化与反序列化的忽略
一.场景 做了一个基于springbootfastjson的小应用。A对象与B对象是OneToMany关系。A对象新增时也希望一起传递B的信息到后台进行Many端数据的新增。直接使用A对象来接收前台传递的信息,springboot会帮我们组装好对象。查询A对象时,又不希望其中的List<…...
【TB作品】基于单片机的实验室管理系统,STM32,GM65二维码扫描模块
硬件: (1)STM32F103C8T6最小板() (2)GM65二维码扫描模块 (3)DS1302实时时钟模块 (4)AT24C02 存储设备 (5)蜂鸣器 …...
超过 1450 个 pfSense 服务器因错误链而遭受 RCE 攻击
在线暴露的大约 1450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击,这些漏洞如果链接起来,可能使攻击者能够在设备上执行远程代码。 pfSense 是一款流行的开源防火墙和路由器软件,允许广泛的定制和部署灵活性。 它是一种经济高效…...
react面试总结2
redux中sages和thunk中间件的区别,优缺点 Redux 中的 redux-saga 和 redux-thunk 都是中间件,用于处理异步操作,但它们有一些区别。 Redux Thunk: 简单易用:redux-thunk 是比较简单直观的中间件,它允许 …...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
