【问题标题】:Does there any O(1) Solution exist for this Problem?这个问题是否存在任何 O(1) 解决方案?
【发布时间】:2020-10-29 21:58:03
【问题描述】:

我们得到了一个大小为 N 的数组1 <= N <= 1e5,其中Ai 为正整数,这样

1 <= Ai <= 1e9

我们将收到 Q 查询。 1 <= Q <= 1e5

每次查询都会有两个空格分隔的整数 b c1 <= b,c <= N

对于每个查询,我们都需要找到 Is moving from index b of array to index c of array possible ?,如果是,那么我们会找到一个特殊的总和,我在下面对此进行了解释。

我们不能简单地从i to i+1 索引移入数组,这是有限制的。如果我们想从i to j 移动,那么A[j] 应该严格大于A[i],即A[j] > A[i]

请注意一件事:While moving we have to take the just next greater element than the current.

我们需要找到的sum 是到达目的地的路径中的元素总和。

举例
数组:3 2 5 4 6 6 7
查询:1 7
因此,根据查询,如果可能,我们需要从第一个元素移动到最后一个元素。
如,我们可以看到我们可以采取3 --> 5 --> 6 --> 7 路径到达目的地,总和是3+5+6+7 = 21
但是如果数组中的最后一个元素是2
数组:3 2 5 4 6 6 2
查询:1 7
对于此查询,我们无法到达目的地,因为在 6 之后,目的地元素 2 小于它。所以对于这个查询NO answer exist

我的方法
我知道我可以在O(n) 中找到答案,只需从A(b) to A(c) 遍历数组并找出答案是否退出以及sum
但问题是有很多查询,所以如果我使用O(n) 解决方案,时间复杂度将为O(QN)
时间限制只有1 sec,所以我需要为此找到一个恒定的时间O(c)solution。

还有一件事 当第二类查询出现时,它变得更加困难。

查询类型 2:在此查询中,我们需要使用给定的K 更新索引处的值。 查询:b k,然后是A[b] = K

谁能帮我解决这个问题??

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后,请edit 您的问题包括您自己尝试解决此问题的minimal reproducible example,以及您遇到的问题的描述。
  • 哦,请注意,大 O 表示法是关于复杂性,而不是绝对时间或其他任何东西。对于时间复杂度,O(1) 中的 1 表示复杂度是恒定时间,这并不一定意味着它只需要一秒。
  • 对不起,我是编程新手。我已经编辑了答案并删除了 c++14 标签。
  • 我们不能有多个可能的总和吗?我们应该返回哪个金额?例如,给定 [1, 5, 4, 8],我们可以使用 4 或 5(但不能同时使用两者)从 1 到 8。
  • 我们将从 1 到 5 然后到 8 ,我们不能从 1 到 4 因为 5 出现在 4 之前并且大于 1。我们必须移动并且必须采用下一个更大的元素。因此,如果从 1 移动到 8,我将取 1,那么下一个更大的元素是 5。所以我将取 5,然后下一个更大的元素是 8,因此将取 8。

标签: arrays algorithm optimization


【解决方案1】:

问题是要求 N 个查询,解决方案很可能是做一个预处理来计算可能性,然后在 O(1) 时间内查询它们中的每一个。

【讨论】:

  • 是的,你是对的,但是我该如何预处理它。那是我无法想到的。​​??如果您知道任何方法,请分享。
  • 我认为将所有对最短路径作为预处理en.wikipedia.org/wiki/…
  • 你能解释一下如何用任何例子来预处理可能性吗?或者用同样的例子提到问题?
  • 实现弗洛伊德战争将产生一个距离矩阵,其中每两对的最短路径,查询将是如果 d[i][j] 是无穷大,那么它是不可到达的,否则你检查是否路径小于给定的查询。我不确定是否有更快的动态编程方法。
  • 这也叫Transitive_closure en.wikipedia.org/wiki/Transitive_closure
猜你喜欢
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
相关资源
最近更新 更多