给定两个输入数组[R1,...,Rn]和[C1,...,Cn]。我们想要创建一个二进制矩阵A(大小为nxn),使得A的第i列元素之和为Ci,A的第j行元素之和为Rj。
我尝试使用贪心算法进行填充:从左到右填充1,并递减Ci,然后对每一行都这样做。但是,它没有奏效。(此外,然后我尝试按降序排序行和列,但仍然没有奏效)
我尝试使用贪心算法进行填充:从左到右填充1,并递减Ci,然后对每一行都这样做。但是,它没有奏效。(此外,然后我尝试按降序排序行和列,但仍然没有奏效)
no_rows
,列数为no_cols
。no_rows + no_cols
个节点。将前no_rows
个节点排列在左边(这将形成二分图的一个“partite”)。我们按照l1, l2, ..., lno_row
编号这些节点。no_cols
个节点(这将形成二分图的第二个“partite”)。我们按照r1、r2、...、rno_cols
编号这些节点。1 <= i <= no_rows
和1 <= j <= no_cols
中的每个(i, j)
为1,否则为0。ri
到汇的边缘的容量为(其中C是输入中表示列和的数组)。
Ri
是连接 (S, li)
的边的容量,而 Ci
是连接 (ri, T)
的边的容量。 - Ankit Sultana
n
为2且R1
为3,则显然没有解决方案。我有一种感觉,即使每个R_i和C_i都小于n
,也有很多无法解决的情况。 - user3386109