【发布时间】:2020-10-31 04:10:05
【问题描述】:
所以,基本上问题在于有一系列山点。我们只能从一个山点移动到下一个更大的山点。
请看下图了解一下。
上图黑点是山顶,每个山顶都有一些香料,有一定的味道价值。我们可以从一个山顶移动到另一个山顶品尝其中的香料。
请参阅下图以了解有效动作。 green lines gives valid movements。
所以,现在我们将得到一个包含 2 个整数 b,c 的查询,对于每个查询,我们需要确定从 b 山点移动到 c 是否可行。如果是,那么我们必须输出旅程的总味道。
假设有一个查询,其中 b = 1 , c = 10。
所以我们需要找到从1号山到10号山的移动是否可行,如果是,我们必须输出旅程的美味。
如果查询量非常少,问题就很简单了,因为对于每个查询,我们可以在循环中迭代,看看是否可以从 1 到 10,如果可以,那么我们将总结味道。
对于这个特殊问题,我们的路径将是 1-->2-->6-->7-->9-->10。
但是如果查询结果是 b = 1 , c = 11。
所以我们不能从 1 到 11,因此没有路径是可能的,答案是 -1。
但是当有非常大的查询时,我们可以为每个查询循环迭代。我的意思是我们必须对数据进行预处理,以便在每个查询中我们只需在恒定时间内计算结果。
我特别想知道什么?
How can i know if reaching from b to c is possible or not in constant time.
If path is possible than how to calculate the sum of path in constant time.
【问题讨论】:
-
一系列山点以什么形式出现?对象数组? (能不能举个例子)
-
例如,它们将在数组中给出。 h[] = {10, 7, 5, 6, 4, 3, 8, 9},其中 hi 是山点的高度。
标签: arrays algorithm optimization