일반적인 결합법칙이 성립하는 이항연산에 대해 sparse table은 공간 복잡도가 O(n log n)이고 초기화가 O(n log n), 쿼리가 O(log n), 업데이트가 O(n)이 됩니다.
그러나 멱등법칙과 교환법칙이 추가로 성립하면 쿼리를 O(1)에 할 수 있게 됩니다.
segment tree는 결합법칙이 성립하는 이항연산에 대해 공간 복잡도가 O(n), 초기화 O(n), 쿼리 및 업데이트가 O(log n)입니다.
따라서 멱등법칙이 성립하는 최솟값, 최댓값에 대해서는 sparse table을 썼을 때 쿼리를 O(1)에 할 수 있다는 장점이 있지만 그 외의 경우는 별 이점이 없고 무엇보다 업데이트가 필요한 경우 사실상 사용할 수 없습니다.
apple8718 2년 전
이 문제를 Sparse Table로 구현한 결과 시간초과가 났습니다.
이에 만일 이 코드가 오류가 아니라면, Sparse Table 과 Segment Tree 자료구조의 차이 및 상호변환성에 대한 궁금증이 생겨 질문드립니다.
지금까지 만난 모든 세그먼트 트리 문제들은 Sparse Table로 해결해온 저로서는 Segment Tree가 Sparse Table과 비교해서 얻는 시간/공간적 우위가 존재하는지, 아니면 모든 Segment Tree 문제는 시간/공간의 중대한 비효율 없이 Sparse Table로 상호 변환이 가능한지 알고 싶습니다.