티스토리 뷰

문제

BOJ 8217 유성

klimmek55 2018. 8. 7. 16:40

유성
(http://boj.kr/8217)


이 문제는 고민을 해봐도 모르겠어서 안 풀려 했는데, 방법을 알아두면 좋을 것 같아서 풀이를 봤다.

일단 기본적으로 구간 업데이트를 펜윅트리로 \(O(\log{n})\)만에 하는 방법은 알고 있어야 한다.
회원국별로 날짜를 이분탐색으로 찾으려고 해도, 그 날에 유성의 개수를 확인하려면 미리 저장해둘 수는 없기 때문에 \(O(k\log{m})\)으로 매번 트리를 만들어야 한다.
그래서 아이디어가 하나 더 들어가서, 어떤 날의 트리를 최대한 활용해야 한다.
그러기 위해 모든 회원국이 하는 이분탐색을 동시에 한다. 즉, 트리가 저장하고 있는 날짜 별로, 그 날에 가능한지 확인해야 하는 회원국들을 같이 확인해주면 된다. 이때 총합이 long long 범위도 넘어갈 수 있다는 것에 주의해야 한다.

이 방법을 사용하면 어쨌든 모든 회원국은 \(\log{k}\)일을 확인해야 하고, 한 번 확인할 때마다 트리의 상태를 \(k\)일 갱신해줘야 하고, 업데이트를 하는데 \(O(\log{m})\)정도 걸리니까 총 시간복잡도는 \(O(k\log{k}\log{m})\)정도 되는 것 같다.

싸리와 버드의 피라미드문제도 그렇고, 같이 할 수 있는 것들을 묶어서 한다는 것이 중요한 것 같다.


'문제' 카테고리의 다른 글

BOJ 2171 직사각형의 개수  (0) 2018.08.12
BOJ 1019 책 페이지  (0) 2018.08.08
BOJ 1867 돌맹이 제거  (0) 2018.08.06
BOJ 15938 더위 피하기  (0) 2018.08.05
BOJ 15942 Thinking Heap  (0) 2018.08.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함