1 条题解
信息
- ID
- 3355
- 时间
- 5000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 1
- 上传者
题目分析 我们需要判断给定的 R×C 子矩阵能否扩展为完整的 n×n 拉丁方,并在可能的情况下构造出一个解。
拉丁方的定义:
n×n 矩阵
每行是 1∼n 的排列
每列是 1∼n 的排列
关键观察 可行性条件:
已知部分每行不能有重复数字
已知部分每列不能有重复数字
对于任意数字 k,它在已知部分出现的次数不能超过 n
构造思路:
将矩阵分为四个区域:
左上角:已知的 R×C 子矩阵
右上角:R×(n−C)
左下角:(n−R)×C
右下角:(n−R)×(n−C)
匹配模型:
可以将问题建模为二分图匹配:
左部:行-数字对 (i,k),表示行 i 还需要数字 k
右部:列-数字对 (j,k),表示列 j 还需要数字 k
边:如果 (i,k) 和 (j,k) 可以匹配(即位置 (i,j) 可以填 k)