尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

模拟赛Atcoder Beginner Contest 433官方题解(E题)

模拟赛Atcoder Beginner Contest 433官方题解(E题)
📅 发布时间:2026/6/19 22:33:48

问题描述

给定整数 \(N, M\),一个包含 \(N\) 个整数的序列 \(X = (X_1, X_2, \dots, X_N)\),以及一个包含 \(M\) 个整数的序列 \(Y = (Y_1, Y_2, \dots, Y_M)\)。

判断是否存在一个 \(N\) 行 \(M\) 列的整数矩阵 \(A = (A_{i,j})\)(其中 \(1 \le i \le N, 1 \le j \le M\)),满足以下所有条件,如果存在,请输出一个这样的矩阵。

条件:

  1. \(1 \le A_{i,j} \le N \times M\)
  2. \(A\) 的所有 \(N \times M\) 个元素互不相同。
  3. 对于每个 \(i = 1, 2, \dots, N\),第 \(i\) 行的最大值等于 \(X_i\)。
  4. 对于每个 \(j = 1, 2, \dots, M\),第 \(j\) 列的最大值等于 \(Y_j\)。

给定 \(T\) 个测试用例,请解决每个测试用例。

约束条件

  • \(1 \le T \le 10^5\)
  • \(1 \le N, M\)
  • 所有测试用例的 \(N \times M\) 的总和不超过 \(2 \times 10^5\)
  • \(1 \le X_i, Y_j \le N \times M\)
  • 所有输入值均为整数

输入格式

\(T\)
\(case_1\)
\(case_2\)
\(\dots\)
\(case_T\)

每个测试用例的格式如下:

\(N\) \(M\)
\(X_1\) \(X_2\) \(\dots\) \(X_N\)
\(Y_1\) \(Y_2\) \(\dots\) \(Y_M\)

输出格式
按顺序输出每个测试用例的答案,用换行分隔。

对于每个测试用例,如果不存在满足所有条件的矩阵 \(A\),则输出 "No"。

否则,输出以下格式的矩阵 \(A\):

\(Yes\)
\(A_{1,1}\) \(A_{1,2}\) \(\dots\) \(A_{1,M}\)
\(A_{2,1}\) \(A_{2,2}\) \(\dots\) \(A_{2,M}\)
\(\vdots\)
\(A_{N,1}\) \(A_{N,2}\) \(\dots\) \(A_{N,M}\)

如果有多个满足条件的矩阵 \(A\),输出任意一个均可。

样例输入 1

3
2 3
5 6
5 3 6
3 3
5 4 6
6 2 4
5 4
18 20 19 14 17
18 20 14 15

样例输出 1

Yes
5 1 4
2 3 6
No
Yes
18 12 4 9
13 20 1 10
16 19 6 8
2 5 14 3
11 17 7 15

第一个测试用例的说明

在样例输出中,矩阵 \(A\) 的所有元素都在 1 到 6 之间且互不相同,并且满足:

  • 第 1 行的最大值:\(\max\{5, 1, 4\} = 5 = X_1\)
  • 第 2 行的最大值:\(\max\{2, 3, 6\} = 6 = X_2\)
  • 第 1 列的最大值:\(\max\{5, 2\} = 5 = Y_1\)
  • 第 2 列的最大值:\(\max\{1, 3\} = 3 = Y_2\)
  • 第 3 列的最大值:\(\max\{4, 6\} = 6 = Y_3\)

因此所有条件都满足。

其他输出(例如以下形式)也是可以接受的:

Yes
5 3 1
4 2 6

如果 \(X\) 中包含重复元素,答案就是 No;\(Y\) 也是同样的道理。我们假设没有这种情况。

考虑按从 \(N \times M\) 到 \(1\) 的降序顺序填充矩阵 \(A\) 的元素。

假设我们已经放置了所有大于 \(v\) 的元素。那么放置 \(v\) 的约束条件如下:

  • 如果 \(v\) 同时存在于 \(X\) 和 \(Y\) 中:对于满足 \(X_i = Y_j = v\) 的位置,令 \(A_{i,j} = v\)。
  • 如果 \(v\) 仅存在于 \(X\) 中:对于满足 \(X_i = v\) 的行,选择一个满足 \(Y_j > v\) 且 \(A_{i,j}\) 尚未确定的列 \(j\),并令 \(A_{i,j} = v\)。
  • 如果 \(v\) 仅存在于 \(Y\) 中:对于满足 \(Y_j = v\) 的列,选择一个满足 \(X_i > v\) 且 \(A_{i,j}\) 尚未确定的行 \(i\),并令 \(A_{i,j} = v\)。
  • 如果 \(v\) 既不在 \(X\) 中也不在 \(Y\) 中:选择满足 \(X_i > v\)、\(Y_j > v\) 且 \(A_{i,j}\) 尚未确定的位置 \((i,j)\),并令 \(A_{i,j} = v\)。

由于我们是按降序填充 \(v\) 的,可填充的候选位置数量是单调递增的。因此,只要满足上述规则,我们可以自由地填充这些位置。

剩下的就是将此思路实现为代码,但直接按上述规则检查会导致很高的计算复杂度,从而造成超时(TLE)。在实现时,我们可以认为一旦满足 \(v < \min(X_i, Y_j)\),\(A_{i,j}\) 就可以自由填充,并将满足 \(v = \min(X_i, Y_j)\) 的位置 \((i,j)\) 管理在列表中。更多细节请参考下面的示例代码。

相关新闻

  • 103_尚硅谷_break课堂练习
  • 2025年北京留学机构哪家好:北京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • 2025年上海全铝家居定制品牌综合实力排行榜TOP5

最新新闻

  • Gemma 4部署全指南:Apache 2.0开源模型的全设备多模态实战
  • Tdiv
  • 2026东莞大朗毛织产业专属法律顾问优质律所推荐(5家精选) - GrowthUME
  • 2026东莞黄江产业园优质法律顾问律所推荐(本地本土优选) - GrowthUME
  • 2026郑州非急救转运救护车TOP5盘点|中原跨省、嵩山山地、院区转诊首选康跃转运 - 吉修匠
  • 2026.6.7

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号