이 문제에 갇혀 있습니다.
주어진 배열 첫 번째 무작위로 순열 된 자연수, 배열 다음과 같이 구성됩니다 요소의 개수입니다 에 보다 작은 .
i) 주어진 당신은 찾을 수 있나요 에 시각?
ii) 주어진 당신은 찾을 수 있나요 에 시각?
여기, . 구체적인 예를 들면 다음과 같습니다.
누구든지 나를 도울 수 있습니까? 감사.
이 문제에 갇혀 있습니다.
주어진 배열 첫 번째 무작위로 순열 된 자연수, 배열 다음과 같이 구성됩니다 요소의 개수입니다 에 보다 작은 .
i) 주어진 당신은 찾을 수 있나요 에 시각?
ii) 주어진 당신은 찾을 수 있나요 에 시각?
여기, . 구체적인 예를 들면 다음과 같습니다.
누구든지 나를 도울 수 있습니까? 감사.
답변:
결정을위한 순진한 알고리즘 ...에서 :
에 대한 의 가치를 결정 각각을 비교함으로써 에 ...에 대한 만족하는 사람들을 세고 .
이 알고리즘은 다른 사람들에게 타임스), 에 다른 것, 등 총 비교 횟수는 . 그러나 그것은 우리가 할 수있는 최선이 아닙니다. 예를 들어비교할 필요가 없습니다. 처음 이기 때문에 자연수이며 (순열에 관계없이) 낮은 자연수가있을 것입니다. 이건 어떤가요? 확인하는 대신 ...을 통하여 , 우리는 단지 확인할 수 있었다 . 그건:
에 대한 위의 알고리즘을 사용하십시오. ...에 대한 역 알고리즘을 사용하십시오 : 결정 처음에 설정하여 그런 다음 빼기 for each entry for that is less than .
This would take steps, which is still . Note also that in constructing from , if then .
But now for more finesse. If we’re allowed some additional space or sort in-place, we can sort the numbers as we’re comparing them. For example:
Instead of checking all of them (or checking them in order), we could use binary search to determine each . However, the sorting still takes time .
Rather than determining each one at a time, we can be forward looking and only go through each number in once! But we'll use space:
We could save even more time by not updating those that have already been determined (that is, there is no point in updating after the first step), but in the worst case, we still have to update times
both I and II are solvable using #next_greater_element that i explained here. but its a little harder than just the problem but before solution you need to learn next greater element:
second part is also similar noting that we can get the value of the rightest element in EDIT:my solution is wrong it seems that it dont have any solution