2018. 5. 9. 14:39, 알고리즘/BOJ
https://www.acmicpc.net/problem/2696
segment tree를 가지고 해결해도 되지만, 중앙값 이하의 값들을 담아두는 max heap과 초과의 값들을 담아두는 min heap을 가지고 해결할수도 있습니다. 23 41 13 22 65를 가지고 heap을 구성해본다면
<23>
max heap : 23
min heap : x (max heap의 top인 23을 출력)
<23 41>
max heap : 23
min heap : 41
<23 41 13>
max heap : 23 13 (13이 41보다 작으므로 13을 max heap에 대입)
min heap : 41 (max heap의 top인 23을 출력)
<23 41 13 22>
max heap : 22 13 (23이 22보다 크므로 max heap의 top을 min heap에 넣고 pop, 22는 max heap에 대입)
min heap : 41 23
<23 41 13 22 65>
max heap : 23 22 13 (65가 23보다 크므로 min heap의 top을 max heap에 넣고 pop, 65는 min heap에 대입)
min heap : 65 41
뭐 이런식으로 합니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 1351번: 무한 수열 (0) | 2018.05.10 |
---|---|
[BOJ] 15708번: 미네크래프트 (2) | 2018.05.10 |
[BOJ] 4195번: Virtual Friends (0) | 2018.05.09 |
[BOJ] 2014번: 소수의 곱 (0) | 2018.05.09 |
[BOJ] 10775번: Gates (0) | 2018.05.09 |
[BOJ] 1202번: LOPOV (0) | 2018.05.09 |
Comments