boj-rs / basm-rs

Rust 코드를 컴파일한 후 실행 파일을 온라인 채점 환경에 제출할 수 있도록 변환합니다.
Other
99 stars 12 forks source link

SegmentTree 디자인 개선 #99

Open byeongkeunahn opened 3 months ago

byeongkeunahn commented 3 months ago
kiwiyou commented 3 months ago

일반적인 Lazy Segment Tree의 용례에서 필요한 기능은 다음과 같습니다.

이외에 더 필요한 게 있을까요?

byeongkeunahn commented 3 months ago

아뇨 충분한 것 같습니다.

그리고 참고를 위해 B+ tree의 사용례를 하나 기록합니다. 좌표압축이나 동적세그트리가 필요한 문제에서 B+ tree를 사용하고 key를 좌표, value를 monoid 원소로 고려하면 훨씬 간결하게 구현할 수 있을 것 같습니다.

kiwiyou commented 3 months ago

B+ Tree가 완전히 Splay Tree를 대체할 수 있는지, 같은 인터페이스를 제공할 수 있는지는 잘 모릅니다. 하지만 Segment Tree라면 벤치마킹 후에 기본 구현으로 도입해도 좋을 것 같습니다.

byeongkeunahn commented 3 months ago

벤치마크는 필요하겠네요. 결과차이가 크면 분리할게요.

Splay Tree의 경우 interval flip 기능이 특징적인데 B+ tree에서도 tree split, concat 연산을 통해 구현이 가능하다고 알고 있습니다. 조금 더 검토해보겠습니다.