我们如何在给定的子矩阵中找到不同元素的数量?

时间:2013-12-10 06:11:05

标签: c++ c algorithm segment-tree

给出相同给定矩阵的N * N矩阵和Q查询。每个查询的格式为x1,y1,x2,y2。我们必须找到由(x1,y1)和(x2,y2)定义的子矩阵中的不同元素的数量分别为左上角和右下角。 约束:N <= 300 Q&LT = 10 ^ 5 我正在使用天真的方法迭代每个查询的子矩阵。有没有更好的方法?

1 个答案:

答案 0 :(得分:1)

这取决于您可以预期的查询数量,以及您可以预期的相同查询数量。

一种方法是“记忆”查询,只是为了存储每个查询和结果,并在做更严肃的工作之前查看。

更具问题的方法 - 可能是你的老师所追求的 - 是为每个(右,底)=(x,y)计算(0,0,x,y)的不同元素。然后它是处理每个查询的简单集合论。但是进行原始计算非常耗时。

请记住添加对此SO答案的引用。