Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使矩阵为零_Arrays_Algorithm_Matrix - Fatal编程技术网

Arrays 使矩阵为零

Arrays 使矩阵为零,arrays,algorithm,matrix,Arrays,Algorithm,Matrix,给出了具有N行和M列的两个矩阵。设P[i][j]和A[i][j]分别为第一和第二矩阵第行的jth元素。现在我们要使第二个矩阵的每个元素为零。在每一轮中,我们必须选择五个整数: 1 ≤ x1 ≤ x2 ≤ N 1 ≤ y1 ≤ y2 ≤ M 0 ≤ k ≤ 10000 在此之后,对于所有对(i,j),如下所示: x1 ≤ i ≤ x2 y1 ≤ j ≤ y2 执行以下操作: A[i][j] = (k + A[i][j]) % P[i][j] 现在,我想使A矩阵以最小的移动量为零。除了拾取每个

给出了具有
N
行和
M
列的两个矩阵。设
P[i][j]
A[i][j]
分别为第一和第二矩阵第
行的
jth
元素。现在我们要使第二个矩阵的每个元素为零。在每一轮中,我们必须选择五个整数:

1 ≤ x1 ≤ x2 ≤ N
1 ≤ y1 ≤ y2 ≤ M
0 ≤ k ≤ 10000
在此之后,对于所有对
(i,j)
,如下所示:

x1 ≤ i ≤ x2
y1 ≤ j ≤ y2
执行以下操作:

A[i][j] = (k + A[i][j]) % P[i][j]
现在,我想使
A
矩阵以最小的移动量为零。除了拾取每个元素并用
P[i][j]-A[i][j]
的差值递增之外,最好的方法是什么

示例:假设我们有
N=2
M=2
,让
p
矩阵为

1 2
2 3
A
矩阵

0 1
1 1
那么这里的最小移动量是2,即:

移动1:将
(1,1)
(2,2)
之间的每个值增加1

移动2:将
(2,2)
之间的每个值增加
(2,2)
1

这是一个优化问题,可能有很多答案,所以我希望答案最接近最小移动

所以我需要告诉每个移动的最小移动量以及
x1,y1,x2,y2
k


约束条件是:
N
M
最多可为100。所有
P[i][j]
的最大值都是10,
A[i][j]
总是大于
P[i][j]

假设无限矩阵项,我很确定最坏的情况是MN移动。最好的情况可能会大大降低,甚至对于某些合理的输入,1次移动。你需要一个准确的答案,还是一个足够接近最小的答案?我们是被限制在机器整数中的
k
值,还是可以使用大值?@user2357112我想要一个足够接近最小值的答案。是的,k可以在上面提到的最大值10000,M和N在内存范围内。你是对的,最坏的情况是MN。OP中的IMHO示例不正确:最小移动应该是1,
(1,1)
(2,2)
的时间为5秒。这是一场正在进行的比赛。请在比赛结束后询问。@DanielTheRocketMan:现在可以在社论上找到答案