【发布时间】:2019-10-15 09:22:35
【问题描述】:
给定矩阵中每一行和每一列的总和,检查是否可以创建二进制矩阵?
输入:
输入的第一行包含两个数字1≤m,n≤100000000,矩阵的行数和列数。下一行包含 m 个数字 0≤ri≤n – 矩阵中每一行的总和。第三行包含 n 个数字 0≤cj≤m - 矩阵中每一列的总和。
输出:
如果存在 m×n 矩阵 A,则输出“YES”,每个元素为 0 或 1。否则为“NO”。
我尝试了Finding if binary matrix exists given the row and column sums中发布的解决方案
上面的解决方案适用于小输入,但是当输入大约为 10 亿时,像 codility 这样的测试平台就会超时。我需要一个比 o(m*n) 更好的解决方案。有人可以帮忙吗?
【问题讨论】:
-
我认为不存在。如果你找到了,一定要发表你的作品!
-
是否有任何属性可以帮助缩小输入的大小?
-
我在这里有点困惑,因为您上面给出的参数阻止输入的大小达到十亿左右(m * n 最多为一百万)。你能详细说明一下吗?
-
见stackoverflow.com/questions/56308347/…。给出了一个算法及其在 C# 中的实现。
标签: algorithm matrix binary-matrix