我需要一个特定的数据结构,我不确定应该使用什么。
我有一个矩阵NxN。每个单元格都有一些整数值。对于矩阵中的任何矩形,我需要计算“价格”,以便:
price = sum( #value_of_field * #distance_from_target ) over cells in rectangle
距离是曼哈顿距离,目标可以是矩形中的任何单元格。矩阵是固定的(不变)。
示例:
1 2
1 2
左上角为[0; 0],左下角为[0; 1],右上角为[1; 0],右下角为[1; 1]
例如,在矩形[0; 0] - [1; 1](整个矩阵)中给定[0; 0],价格将为:
price = 1 * 0 + 2 * 1 + 1 * 1 + 2 * 2 = 7
price of price of
[0;0] * [1;0] * ..... ....
distance distance
from [0;0] from [0;0]
我该如何解决这个问题? m x n(其中m,n是矩形的维数)的解决方案很容易,但它会变慢。如何加快速度(例如,预先计算某些东西)?
答案 0 :(得分:1)
提前计算Ai和Bi:
这会给你答案。
每次价格计算的时间复杂度为O(N)
。准备Ai和Bi的时间复杂度也是O(N)
。