当前位置: 首页 > news >正文

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

问题描述

给定整数 \(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)\) 管理在列表中。更多细节请参考下面的示例代码。

http://www.jsqmd.com/news/49218/

相关文章:

  • 2025年北京留学机构排名:北京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • 103_尚硅谷_break课堂练习
  • 2025年北京留学机构哪家好:北京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • 2025年北京出国留学机构排名:北京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • 2025年北京留学机构推荐:北京留学,英国留学,香港留学,新加坡留学,澳洲留学,美国留学
  • 2025年上海全铝家居定制品牌综合实力排行榜TOP5
  • 安康PC耐力板厂家实力榜2025
  • NSCT分解与重建MATLAB实现
  • BAT54S-ASEMI可直接替代安世BAT54S-QR
  • 我们被主机厂坑掉几百万的那一年
  • qgis合并卫片
  • 深入解析:【经验】Word/WPS|用邮件合并批量填写表格或教案,单个Word导出成多个文件(包含插入图片的教程)
  • LTE系统资源分配MATLAB实现示例
  • java 和C语言啥区别
  • 2025 年 11 月二手车市场权威推荐榜:昆山二手车,上海二手车,浙江二手车,太仓二手车,精选车源与高性价比之选
  • 矢量字库应用全攻略:新手入门到高手实操一本通!
  • 2025 年 11 月 PVC 地板厂家权威推荐榜:导电防静电/同质透心/复合商用/磁性自沉式,精选耐用环保材质与创新工艺解析
  • 逢年过节都要祈祷
  • 2025 年 11 月建筑加固厂家权威推荐榜:碳纤维加固、粘钢加固,专业工艺与持久安全的高效解决方案
  • 在ubuntu中使用新世纪五笔输入法
  • python: 安装pyautogui
  • 想要中山中空阳光板优惠?查行情享高达20%折扣
  • 数字化转型:小企业反而更有优势?
  • 数据告诉你:不会解决问题,是企业最大的痛点!
  • 2025年质量好的央企职业装定制最新TOP厂家排名
  • AIR103#W806
  • 2025北京热门留学机构排名榜
  • 2025年口碑好的免冲水小便器厂家最新权威实力榜
  • 办公软件!zRenamer 批量改名工具完全指南:下载、安装与实战使用教程
  • 2025年热门的空调金属波纹管厂家最新推荐权威榜